!(function (e, t) {
  'object' == typeof exports && 'undefined' != typeof module
    ? t(require('path'), require('fs'), require('crypto'))
    : 'function' == typeof define && define.amd
    ? define(['path', 'fs', 'crypto'], t)
    : t((e = 'undefined' != typeof globalThis ? globalThis : e || self).path, e.fs, e.crypto$1)
})(this, function (e, m, g) {
  'use strict'
  function t(e) {
    return e && 'object' == typeof e && 'default' in e ? e : { default: e }
  }
  var Tt = t(e),
    Bt = t(m),
    At = t(g)
  function y(e, t) {
    return e((t = { exports: {} }), t.exports), t.exports
  }
  var _ = y(function (I) {
      var g
      ;(g = void 0 !== (g = void 0 !== g ? g : {}) ? g : {}).locateFile = function (e) {
        return 'decoder-pro-simd.wasm' == e &&
          'undefined' != typeof JESSIBUCA_PRO_SIMD_WASM_URL &&
          '' != JESSIBUCA_PRO_SIMD_WASM_URL
          ? JESSIBUCA_PRO_SIMD_WASM_URL
          : e
      }
      var t,
        m,
        M,
        $,
        N,
        O,
        a,
        G = Object.assign({}, g),
        V = './this.program',
        z = 'object' == typeof window,
        d = 'function' == typeof importScripts,
        j =
          'object' == typeof process &&
          'object' == typeof process.versions &&
          'string' == typeof process.versions.node,
        e = '',
        W =
          (j
            ? ((e = d ? Tt.default.dirname(e) + '/' : __dirname + '/'),
              (O = () => {
                N || (($ = Bt.default), (N = Tt.default))
              }),
              (t = function (e, t) {
                return O(), (e = N.normalize(e)), $.readFileSync(e, t ? void 0 : 'utf8')
              }),
              (M = e => {
                e = t(e, !0)
                return (e = e.buffer ? e : new Uint8Array(e))
              }),
              (m = (e, r, n) => {
                O(),
                  (e = N.normalize(e)),
                  $.readFile(e, function (e, t) {
                    e ? n(e) : r(t.buffer)
                  })
              }),
              1 < process.argv.length && (V = process.argv[1].replace(/\\/g, '/')),
              process.argv.slice(2),
              (I.exports = g),
              process.on('uncaughtException', function (e) {
                if (
                  !(
                    e instanceof
                    function (e) {
                      ;(this.name = 'ExitStatus'),
                        (this.message = 'Program terminated with exit(' + e + ')'),
                        (this.status = e)
                    }
                  )
                )
                  throw e
              }),
              process.on('unhandledRejection', function (e) {
                throw e
              }),
              (g.inspect = function () {
                return '[Emscripten Module object]'
              }))
            : (z || d) &&
              (d
                ? (e = self.location.href)
                : 'undefined' != typeof document &&
                  document.currentScript &&
                  (e = document.currentScript.src),
              (e =
                0 !== e.indexOf('blob:')
                  ? e.substr(0, e.replace(/[?#].*/, '').lastIndexOf('/') + 1)
                  : ''),
              (t = e => {
                var t = new XMLHttpRequest()
                return t.open('GET', e, !1), t.send(null), t.responseText
              }),
              d &&
                (M = e => {
                  var t = new XMLHttpRequest()
                  return (
                    t.open('GET', e, !1),
                    (t.responseType = 'arraybuffer'),
                    t.send(null),
                    new Uint8Array(t.response)
                  )
                }),
              (m = (e, t, r) => {
                var n = new XMLHttpRequest()
                n.open('GET', e, !0),
                  (n.responseType = 'arraybuffer'),
                  (n.onload = () => {
                    200 == n.status || (0 == n.status && n.response) ? t(n.response) : r()
                  }),
                  (n.onerror = r),
                  n.send(null)
              })),
          g.print || console.log.bind(console)),
        s = g.printErr || console.warn.bind(console),
        H =
          (Object.assign(g, G),
          g.arguments && g.arguments,
          g.thisProgram && (V = g.thisProgram),
          g.quit && g.quit,
          g.wasmBinary && (a = g.wasmBinary),
          g.noExitRuntime,
          'object' != typeof WebAssembly && w('no native wasm support detected'),
          !1)
      function q(e, t) {
        e || w(t)
      }
      var X,
        c,
        f,
        l,
        K,
        u,
        p,
        Y,
        J,
        Z,
        Q = 'undefined' != typeof TextDecoder ? new TextDecoder('utf8') : void 0
      function i(e, t, r) {
        for (var n = t + r, o = t; e[o] && !(n <= o); ) ++o
        if (16 < o - t && e.buffer && Q) return Q.decode(e.subarray(t, o))
        for (var a = ''; t < o; ) {
          var i,
            s,
            l = e[t++]
          128 & l
            ? ((i = 63 & e[t++]),
              192 != (224 & l)
                ? ((s = 63 & e[t++]),
                  (l =
                    224 == (240 & l)
                      ? ((15 & l) << 12) | (i << 6) | s
                      : ((7 & l) << 18) | (i << 12) | (s << 6) | (63 & e[t++])) < 65536
                    ? (a += String.fromCharCode(l))
                    : ((s = l - 65536),
                      (a += String.fromCharCode(55296 | (s >> 10), 56320 | (1023 & s)))))
                : (a += String.fromCharCode(((31 & l) << 6) | i)))
            : (a += String.fromCharCode(l))
        }
        return a
      }
      function ee(e, t) {
        return e ? i(f, e, t) : ''
      }
      function te(e, t, r, n) {
        if (!(0 < n)) return 0
        for (var o = r, a = r + n - 1, i = 0; i < e.length; ++i) {
          var s = e.charCodeAt(i)
          if (
            (s =
              55296 <= s && s <= 57343
                ? (65536 + ((1023 & s) << 10)) | (1023 & e.charCodeAt(++i))
                : s) <= 127
          ) {
            if (a <= r) break
            t[r++] = s
          } else if (s <= 2047) {
            if (a <= r + 1) break
            ;(t[r++] = 192 | (s >> 6)), (t[r++] = 128 | (63 & s))
          } else if (s <= 65535) {
            if (a <= r + 2) break
            ;(t[r++] = 224 | (s >> 12)), (t[r++] = 128 | ((s >> 6) & 63)), (t[r++] = 128 | (63 & s))
          } else {
            if (a <= r + 3) break
            ;(t[r++] = 240 | (s >> 18)),
              (t[r++] = 128 | ((s >> 12) & 63)),
              (t[r++] = 128 | ((s >> 6) & 63)),
              (t[r++] = 128 | (63 & s))
          }
        }
        return (t[r] = 0), r - o
      }
      function re(e) {
        for (var t = 0, r = 0; r < e.length; ++r) {
          var n = e.charCodeAt(r)
          n <= 127
            ? t++
            : n <= 2047
            ? (t += 2)
            : 55296 <= n && n <= 57343
            ? ((t += 4), ++r)
            : (t += 3)
        }
        return t
      }
      g.INITIAL_MEMORY
      var h,
        y,
        _,
        ne = [],
        oe = [],
        ae = [],
        r = 0,
        n = null
      function ie() {
        r++, g.monitorRunDependencies && g.monitorRunDependencies(r)
      }
      function se() {
        var e
        r--,
          g.monitorRunDependencies && g.monitorRunDependencies(r),
          0 == r && n && ((e = n), (n = null), e())
      }
      function w(e) {
        throw (
          (g.onAbort && g.onAbort(e),
          s((e = 'Aborted(' + e + ')')),
          (H = !0),
          (e += '. Build with -sASSERTIONS for more info.'),
          new WebAssembly.RuntimeError(e))
        )
      }
      function le(e) {
        return e.startsWith('data:application/octet-stream;base64,')
      }
      function ue(e) {
        return e.startsWith('file://')
      }
      function de(e) {
        try {
          if (e == h && a) return new Uint8Array(a)
          if (M) return M(e)
          throw 'both async and sync fetching of the wasm failed'
        } catch (e) {
          w(e)
        }
      }
      function ce(e) {
        for (; 0 < e.length; ) e.shift()(g)
      }
      function fe(e) {
        ;(this.excPtr = e),
          (this.ptr = e - 24),
          (this.set_type = function (e) {
            p[(this.ptr + 4) >> 2] = e
          }),
          (this.get_type = function () {
            return p[(this.ptr + 4) >> 2]
          }),
          (this.set_destructor = function (e) {
            p[(this.ptr + 8) >> 2] = e
          }),
          (this.get_destructor = function () {
            return p[(this.ptr + 8) >> 2]
          }),
          (this.set_refcount = function (e) {
            u[this.ptr >> 2] = e
          }),
          (this.set_caught = function (e) {
            c[(this.ptr + 12) >> 0] = e = e ? 1 : 0
          }),
          (this.get_caught = function () {
            return 0 != c[(this.ptr + 12) >> 0]
          }),
          (this.set_rethrown = function (e) {
            c[(this.ptr + 13) >> 0] = e = e ? 1 : 0
          }),
          (this.get_rethrown = function () {
            return 0 != c[(this.ptr + 13) >> 0]
          }),
          (this.init = function (e, t) {
            this.set_adjusted_ptr(0),
              this.set_type(e),
              this.set_destructor(t),
              this.set_refcount(0),
              this.set_caught(!1),
              this.set_rethrown(!1)
          }),
          (this.add_ref = function () {
            var e = u[this.ptr >> 2]
            u[this.ptr >> 2] = e + 1
          }),
          (this.release_ref = function () {
            var e = u[this.ptr >> 2]
            return (u[this.ptr >> 2] = e - 1), 1 === e
          }),
          (this.set_adjusted_ptr = function (e) {
            p[(this.ptr + 16) >> 2] = e
          }),
          (this.get_adjusted_ptr = function () {
            return p[(this.ptr + 16) >> 2]
          }),
          (this.get_exception_ptr = function () {
            if (Et(this.get_type())) return p[this.excPtr >> 2]
            var e = this.get_adjusted_ptr()
            return 0 !== e ? e : this.excPtr
          })
      }
      le((h = 'decoder-pro-simd.wasm')) ||
        ((G = h), (h = g.locateFile ? g.locateFile(G, e) : e + G))
      var v = {
          isAbs: e => '/' === e.charAt(0),
          splitPath: e =>
            /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),
          normalizeArray: (e, t) => {
            for (var r = 0, n = e.length - 1; 0 <= n; n--) {
              var o = e[n]
              '.' === o
                ? e.splice(n, 1)
                : '..' === o
                ? (e.splice(n, 1), r++)
                : r && (e.splice(n, 1), r--)
            }
            if (t) for (; r; r--) e.unshift('..')
            return e
          },
          normalize: e => {
            var t = v.isAbs(e),
              r = '/' === e.substr(-1)
            return (
              (e =
                (e = v
                  .normalizeArray(
                    e.split('/').filter(e => !!e),
                    !t,
                  )
                  .join('/')) || t
                  ? e
                  : '.') &&
                r &&
                (e += '/'),
              (t ? '/' : '') + e
            )
          },
          dirname: e => {
            var e = v.splitPath(e),
              t = e[0],
              e = e[1]
            return t || e ? t + (e = e && e.substr(0, e.length - 1)) : '.'
          },
          basename: e => {
            if ('/' === e) return '/'
            var t = (e = (e = v.normalize(e)).replace(/\/$/, '')).lastIndexOf('/')
            return -1 === t ? e : e.substr(t + 1)
          },
          join: function () {
            var e = Array.prototype.slice.call(arguments, 0)
            return v.normalize(e.join('/'))
          },
          join2: (e, t) => v.normalize(e + '/' + t),
        },
        b = {
          resolve: function () {
            for (var e = '', t = !1, r = arguments.length - 1; -1 <= r && !t; r--) {
              var n = 0 <= r ? arguments[r] : k.cwd()
              if ('string' != typeof n)
                throw new TypeError('Arguments to path.resolve must be strings')
              if (!n) return ''
              ;(e = n + '/' + e), (t = v.isAbs(n))
            }
            return (
              (t ? '/' : '') +
                v
                  .normalizeArray(
                    e.split('/').filter(e => !!e),
                    !t,
                  )
                  .join('/') || '.'
            )
          },
          relative: (e, t) => {
            function r(e) {
              for (var t = 0; t < e.length && '' === e[t]; t++);
              for (var r = e.length - 1; 0 <= r && '' === e[r]; r--);
              return r < t ? [] : e.slice(t, r - t + 1)
            }
            ;(e = b.resolve(e).substr(1)), (t = b.resolve(t).substr(1))
            for (
              var n = r(e.split('/')),
                o = r(t.split('/')),
                a = Math.min(n.length, o.length),
                i = a,
                s = 0;
              s < a;
              s++
            )
              if (n[s] !== o[s]) {
                i = s
                break
              }
            for (var l = [], s = i; s < n.length; s++) l.push('..')
            return (l = l.concat(o.slice(i))).join('/')
          },
        }
      function pe(e, t, r) {
        ;(r = 0 < r ? r : re(e) + 1), (r = new Array(r)), (e = te(e, r, 0, r.length))
        return t && (r.length = e), r
      }
      var o = {
        ttys: [],
        init: function () {},
        shutdown: function () {},
        register: function (e, t) {
          ;(o.ttys[e] = { input: [], output: [], ops: t }), k.registerDevice(e, o.stream_ops)
        },
        stream_ops: {
          open: function (e) {
            var t = o.ttys[e.node.rdev]
            if (!t) throw new k.ErrnoError(43)
            ;(e.tty = t), (e.seekable = !1)
          },
          close: function (e) {
            e.tty.ops.flush(e.tty)
          },
          flush: function (e) {
            e.tty.ops.flush(e.tty)
          },
          read: function (e, t, r, n, o) {
            if (!e.tty || !e.tty.ops.get_char) throw new k.ErrnoError(60)
            for (var a, i = 0, s = 0; s < n; s++) {
              try {
                a = e.tty.ops.get_char(e.tty)
              } catch (e) {
                throw new k.ErrnoError(29)
              }
              if (void 0 === a && 0 === i) throw new k.ErrnoError(6)
              if (null == a) break
              i++, (t[r + s] = a)
            }
            return i && (e.node.timestamp = Date.now()), i
          },
          write: function (e, t, r, n, o) {
            if (!e.tty || !e.tty.ops.put_char) throw new k.ErrnoError(60)
            try {
              for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, t[r + a])
            } catch (e) {
              throw new k.ErrnoError(29)
            }
            return n && (e.node.timestamp = Date.now()), a
          },
        },
        default_tty_ops: {
          get_char: function (e) {
            if (!e.input.length) {
              var t = null
              if (j) {
                var r = Buffer.alloc(256),
                  n = 0
                try {
                  n = $.readSync(process.stdin.fd, r, 0, 256, -1)
                } catch (e) {
                  if (!e.toString().includes('EOF')) throw e
                  n = 0
                }
                t = 0 < n ? r.slice(0, n).toString('utf-8') : null
              } else
                'undefined' != typeof window && 'function' == typeof window.prompt
                  ? null !== (t = window.prompt('Input: ')) && (t += '\n')
                  : 'function' == typeof readline && null !== (t = readline()) && (t += '\n')
              if (!t) return null
              e.input = pe(t, !0)
            }
            return e.input.shift()
          },
          put_char: function (e, t) {
            null === t || 10 === t
              ? (W(i(e.output, 0)), (e.output = []))
              : 0 != t && e.output.push(t)
          },
          flush: function (e) {
            e.output && 0 < e.output.length && (W(i(e.output, 0)), (e.output = []))
          },
        },
        default_tty1_ops: {
          put_char: function (e, t) {
            null === t || 10 === t
              ? (s(i(e.output, 0)), (e.output = []))
              : 0 != t && e.output.push(t)
          },
          flush: function (e) {
            e.output && 0 < e.output.length && (s(i(e.output, 0)), (e.output = []))
          },
        },
      }
      function he(e) {
        ;(t = e), (e = 65536 * Math.ceil(t / 65536))
        var t = bt(65536, e)
        return t ? ((e = e), f.fill(0, t, t + e), t) : 0
      }
      var E = {
          ops_table: null,
          mount: function (e) {
            return E.createNode(null, '/', 16895, 0)
          },
          createNode: function (e, t, r, n) {
            if (k.isBlkdev(r) || k.isFIFO(r)) throw new k.ErrnoError(63)
            E.ops_table ||
              (E.ops_table = {
                dir: {
                  node: {
                    getattr: E.node_ops.getattr,
                    setattr: E.node_ops.setattr,
                    lookup: E.node_ops.lookup,
                    mknod: E.node_ops.mknod,
                    rename: E.node_ops.rename,
                    unlink: E.node_ops.unlink,
                    rmdir: E.node_ops.rmdir,
                    readdir: E.node_ops.readdir,
                    symlink: E.node_ops.symlink,
                  },
                  stream: { llseek: E.stream_ops.llseek },
                },
                file: {
                  node: { getattr: E.node_ops.getattr, setattr: E.node_ops.setattr },
                  stream: {
                    llseek: E.stream_ops.llseek,
                    read: E.stream_ops.read,
                    write: E.stream_ops.write,
                    allocate: E.stream_ops.allocate,
                    mmap: E.stream_ops.mmap,
                    msync: E.stream_ops.msync,
                  },
                },
                link: {
                  node: {
                    getattr: E.node_ops.getattr,
                    setattr: E.node_ops.setattr,
                    readlink: E.node_ops.readlink,
                  },
                  stream: {},
                },
                chrdev: {
                  node: { getattr: E.node_ops.getattr, setattr: E.node_ops.setattr },
                  stream: k.chrdev_stream_ops,
                },
              })
            r = k.createNode(e, t, r, n)
            return (
              k.isDir(r.mode)
                ? ((r.node_ops = E.ops_table.dir.node),
                  (r.stream_ops = E.ops_table.dir.stream),
                  (r.contents = {}))
                : k.isFile(r.mode)
                ? ((r.node_ops = E.ops_table.file.node),
                  (r.stream_ops = E.ops_table.file.stream),
                  (r.usedBytes = 0),
                  (r.contents = null))
                : k.isLink(r.mode)
                ? ((r.node_ops = E.ops_table.link.node), (r.stream_ops = E.ops_table.link.stream))
                : k.isChrdev(r.mode) &&
                  ((r.node_ops = E.ops_table.chrdev.node),
                  (r.stream_ops = E.ops_table.chrdev.stream)),
              (r.timestamp = Date.now()),
              e && ((e.contents[t] = r), (e.timestamp = r.timestamp)),
              r
            )
          },
          getFileDataAsTypedArray: function (e) {
            return e.contents
              ? e.contents.subarray
                ? e.contents.subarray(0, e.usedBytes)
                : new Uint8Array(e.contents)
              : new Uint8Array(0)
          },
          expandFileStorage: function (e, t) {
            var r = e.contents ? e.contents.length : 0
            t <= r ||
              ((t = Math.max(t, (r * (r < 1048576 ? 2 : 1.125)) >>> 0)),
              0 != r && (t = Math.max(t, 256)),
              (r = e.contents),
              (e.contents = new Uint8Array(t)),
              0 < e.usedBytes && e.contents.set(r.subarray(0, e.usedBytes), 0))
          },
          resizeFileStorage: function (e, t) {
            var r
            e.usedBytes != t &&
              (0 == t
                ? ((e.contents = null), (e.usedBytes = 0))
                : ((r = e.contents),
                  (e.contents = new Uint8Array(t)),
                  r && e.contents.set(r.subarray(0, Math.min(t, e.usedBytes))),
                  (e.usedBytes = t)))
          },
          node_ops: {
            getattr: function (e) {
              var t = {}
              return (
                (t.dev = k.isChrdev(e.mode) ? e.id : 1),
                (t.ino = e.id),
                (t.mode = e.mode),
                (t.nlink = 1),
                (t.uid = 0),
                (t.gid = 0),
                (t.rdev = e.rdev),
                k.isDir(e.mode)
                  ? (t.size = 4096)
                  : k.isFile(e.mode)
                  ? (t.size = e.usedBytes)
                  : k.isLink(e.mode)
                  ? (t.size = e.link.length)
                  : (t.size = 0),
                (t.atime = new Date(e.timestamp)),
                (t.mtime = new Date(e.timestamp)),
                (t.ctime = new Date(e.timestamp)),
                (t.blksize = 4096),
                (t.blocks = Math.ceil(t.size / t.blksize)),
                t
              )
            },
            setattr: function (e, t) {
              void 0 !== t.mode && (e.mode = t.mode),
                void 0 !== t.timestamp && (e.timestamp = t.timestamp),
                void 0 !== t.size && E.resizeFileStorage(e, t.size)
            },
            lookup: function (e, t) {
              throw k.genericErrors[44]
            },
            mknod: function (e, t, r, n) {
              return E.createNode(e, t, r, n)
            },
            rename: function (e, t, r) {
              if (k.isDir(e.mode)) {
                var n
                try {
                  n = k.lookupNode(t, r)
                } catch (e) {}
                if (n) for (var o in n.contents) throw new k.ErrnoError(55)
              }
              delete e.parent.contents[e.name],
                (e.parent.timestamp = Date.now()),
                (e.name = r),
                (t.contents[r] = e),
                (t.timestamp = e.parent.timestamp),
                (e.parent = t)
            },
            unlink: function (e, t) {
              delete e.contents[t], (e.timestamp = Date.now())
            },
            rmdir: function (e, t) {
              for (var r in k.lookupNode(e, t).contents) throw new k.ErrnoError(55)
              delete e.contents[t], (e.timestamp = Date.now())
            },
            readdir: function (e) {
              var t,
                r = ['.', '..']
              for (t in e.contents) e.contents.hasOwnProperty(t) && r.push(t)
              return r
            },
            symlink: function (e, t, r) {
              e = E.createNode(e, t, 41471, 0)
              return (e.link = r), e
            },
            readlink: function (e) {
              if (k.isLink(e.mode)) return e.link
              throw new k.ErrnoError(28)
            },
          },
          stream_ops: {
            read: function (e, t, r, n, o) {
              var a = e.node.contents
              if (o >= e.node.usedBytes) return 0
              var i = Math.min(e.node.usedBytes - o, n)
              if (8 < i && a.subarray) t.set(a.subarray(o, o + i), r)
              else for (var s = 0; s < i; s++) t[r + s] = a[o + s]
              return i
            },
            write: function (e, t, r, n, o, a) {
              if (!n) return 0
              var i = e.node
              if (
                ((i.timestamp = Date.now()), t.subarray && (!i.contents || i.contents.subarray))
              ) {
                if (a) return (i.contents = t.subarray(r, r + n)), (i.usedBytes = n)
                if (0 === i.usedBytes && 0 === o)
                  return (i.contents = t.slice(r, r + n)), (i.usedBytes = n)
                if (o + n <= i.usedBytes) return i.contents.set(t.subarray(r, r + n), o), n
              }
              if ((E.expandFileStorage(i, o + n), i.contents.subarray && t.subarray))
                i.contents.set(t.subarray(r, r + n), o)
              else for (var s = 0; s < n; s++) i.contents[o + s] = t[r + s]
              return (i.usedBytes = Math.max(i.usedBytes, o + n)), n
            },
            llseek: function (e, t, r) {
              if (
                (1 === r
                  ? (t += e.position)
                  : 2 === r && k.isFile(e.node.mode) && (t += e.node.usedBytes),
                t < 0)
              )
                throw new k.ErrnoError(28)
              return t
            },
            allocate: function (e, t, r) {
              E.expandFileStorage(e.node, t + r),
                (e.node.usedBytes = Math.max(e.node.usedBytes, t + r))
            },
            mmap: function (e, t, r, n, o) {
              if (!k.isFile(e.node.mode)) throw new k.ErrnoError(43)
              var a,
                i,
                e = e.node.contents
              if (2 & o || e.buffer !== X) {
                if (
                  ((0 < r || r + t < e.length) &&
                    (e = e.subarray
                      ? e.subarray(r, r + t)
                      : Array.prototype.slice.call(e, r, r + t)),
                  (i = !0),
                  !(a = he(t)))
                )
                  throw new k.ErrnoError(48)
                c.set(e, a)
              } else (i = !1), (a = e.byteOffset)
              return { ptr: a, allocated: i }
            },
            msync: function (e, t, r, n, o) {
              if (k.isFile(e.node.mode)) return 2 & o || E.stream_ops.write(e, t, 0, n, r, !1), 0
              throw new k.ErrnoError(43)
            },
          },
        },
        k = {
          root: null,
          mounts: [],
          devices: {},
          streams: [],
          nextInode: 1,
          nameTable: null,
          currentPath: '/',
          initialized: !1,
          ignorePermissions: !0,
          ErrnoError: null,
          genericErrors: {},
          filesystems: null,
          syncFSRequests: 0,
          lookupPath: function (e) {
            var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}
            if (!(e = b.resolve(k.cwd(), e))) return { path: '', node: null }
            if (8 < (t = Object.assign({ follow_mount: !0, recurse_count: 0 }, t)).recurse_count)
              throw new k.ErrnoError(32)
            for (
              var r = v.normalizeArray(
                  e.split('/').filter(e => !!e),
                  !1,
                ),
                n = k.root,
                o = '/',
                a = 0;
              a < r.length;
              a++
            ) {
              var i = a === r.length - 1
              if (i && t.parent) break
              if (
                ((n = k.lookupNode(n, r[a])),
                (o = v.join2(o, r[a])),
                !k.isMountpoint(n) || (i && !t.follow_mount) || (n = n.mounted.root),
                !i || t.follow)
              )
                for (var s = 0; k.isLink(n.mode); ) {
                  var l = k.readlink(o),
                    o = b.resolve(v.dirname(o), l),
                    n = k.lookupPath(o, { recurse_count: t.recurse_count + 1 }).node
                  if (40 < s++) throw new k.ErrnoError(32)
                }
            }
            return { path: o, node: n }
          },
          getPath: e => {
            for (var t, r; ; ) {
              if (k.isRoot(e))
                return (
                  (r = e.mount.mountpoint), t ? ('/' !== r[r.length - 1] ? r + '/' + t : r + t) : r
                )
              ;(t = t ? e.name + '/' + t : e.name), (e = e.parent)
            }
          },
          hashName: (e, t) => {
            for (var r = 0, n = 0; n < t.length; n++) r = ((r << 5) - r + t.charCodeAt(n)) | 0
            return ((e + r) >>> 0) % k.nameTable.length
          },
          hashAddNode: e => {
            var t = k.hashName(e.parent.id, e.name)
            ;(e.name_next = k.nameTable[t]), (k.nameTable[t] = e)
          },
          hashRemoveNode: e => {
            var t = k.hashName(e.parent.id, e.name)
            if (k.nameTable[t] === e) k.nameTable[t] = e.name_next
            else
              for (var r = k.nameTable[t]; r; ) {
                if (r.name_next === e) {
                  r.name_next = e.name_next
                  break
                }
                r = r.name_next
              }
          },
          lookupNode: (e, t) => {
            var r = k.mayLookup(e)
            if (r) throw new k.ErrnoError(r, e)
            for (var r = k.hashName(e.id, t), n = k.nameTable[r]; n; n = n.name_next) {
              var o = n.name
              if (n.parent.id === e.id && o === t) return n
            }
            return k.lookup(e, t)
          },
          createNode: (e, t, r, n) => {
            e = new k.FSNode(e, t, r, n)
            return k.hashAddNode(e), e
          },
          destroyNode: e => {
            k.hashRemoveNode(e)
          },
          isRoot: e => e === e.parent,
          isMountpoint: e => !!e.mounted,
          isFile: e => 32768 == (61440 & e),
          isDir: e => 16384 == (61440 & e),
          isLink: e => 40960 == (61440 & e),
          isChrdev: e => 8192 == (61440 & e),
          isBlkdev: e => 24576 == (61440 & e),
          isFIFO: e => 4096 == (61440 & e),
          isSocket: e => 49152 == (49152 & e),
          flagModes: { r: 0, 'r+': 2, w: 577, 'w+': 578, a: 1089, 'a+': 1090 },
          modeStringToFlags: e => {
            var t = k.flagModes[e]
            if (void 0 === t) throw new Error('Unknown file open mode: ' + e)
            return t
          },
          flagsToPermissionString: e => {
            var t = ['r', 'w', 'rw'][3 & e]
            return 512 & e && (t += 'w'), t
          },
          nodePermissions: (e, t) =>
            k.ignorePermissions ||
            ((!t.includes('r') || 292 & e.mode) &&
              (!t.includes('w') || 146 & e.mode) &&
              (!t.includes('x') || 73 & e.mode))
              ? 0
              : 2,
          mayLookup: e => {
            return k.nodePermissions(e, 'x') || (e.node_ops.lookup ? 0 : 2)
          },
          mayCreate: (e, t) => {
            try {
              return k.lookupNode(e, t), 20
            } catch (e) {}
            return k.nodePermissions(e, 'wx')
          },
          mayDelete: (e, t, r) => {
            var n
            try {
              n = k.lookupNode(e, t)
            } catch (e) {
              return e.errno
            }
            t = k.nodePermissions(e, 'wx')
            if (t) return t
            if (r) {
              if (!k.isDir(n.mode)) return 54
              if (k.isRoot(n) || k.getPath(n) === k.cwd()) return 10
            } else if (k.isDir(n.mode)) return 31
            return 0
          },
          mayOpen: (e, t) =>
            e
              ? k.isLink(e.mode)
                ? 32
                : k.isDir(e.mode) && ('r' !== k.flagsToPermissionString(t) || 512 & t)
                ? 31
                : k.nodePermissions(e, k.flagsToPermissionString(t))
              : 44,
          MAX_OPEN_FDS: 4096,
          nextfd: function () {
            for (
              var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0,
                t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : k.MAX_OPEN_FDS,
                r = e;
              r <= t;
              r++
            )
              if (!k.streams[r]) return r
            throw new k.ErrnoError(33)
          },
          getStream: e => k.streams[e],
          createStream: (e, t, r) => {
            k.FSStream ||
              ((k.FSStream = function () {
                this.shared = {}
              }),
              (k.FSStream.prototype = {}),
              Object.defineProperties(k.FSStream.prototype, {
                object: {
                  get: function () {
                    return this.node
                  },
                  set: function (e) {
                    this.node = e
                  },
                },
                isRead: {
                  get: function () {
                    return 1 != (2097155 & this.flags)
                  },
                },
                isWrite: {
                  get: function () {
                    return 0 != (2097155 & this.flags)
                  },
                },
                isAppend: {
                  get: function () {
                    return 1024 & this.flags
                  },
                },
                flags: {
                  get: function () {
                    return this.shared.flags
                  },
                  set: function (e) {
                    this.shared.flags = e
                  },
                },
                position: {
                  get: function () {
                    return this.shared.position
                  },
                  set: function (e) {
                    this.shared.position = e
                  },
                },
              })),
              (e = Object.assign(new k.FSStream(), e))
            t = k.nextfd(t, r)
            return (e.fd = t), (k.streams[t] = e)
          },
          closeStream: e => {
            k.streams[e] = null
          },
          chrdev_stream_ops: {
            open: e => {
              var t = k.getDevice(e.node.rdev)
              ;(e.stream_ops = t.stream_ops), e.stream_ops.open && e.stream_ops.open(e)
            },
            llseek: () => {
              throw new k.ErrnoError(70)
            },
          },
          major: e => e >> 8,
          minor: e => 255 & e,
          makedev: (e, t) => (e << 8) | t,
          registerDevice: (e, t) => {
            k.devices[e] = { stream_ops: t }
          },
          getDevice: e => k.devices[e],
          getMounts: e => {
            for (var t = [], r = [e]; r.length; ) {
              var n = r.pop()
              t.push(n), r.push.apply(r, n.mounts)
            }
            return t
          },
          syncfs: (t, r) => {
            'function' == typeof t && ((r = t), (t = !1)),
              k.syncFSRequests++,
              1 < k.syncFSRequests &&
                s(
                  'warning: ' +
                    k.syncFSRequests +
                    ' FS.syncfs operations in flight at once, probably just doing extra work',
                )
            var n = k.getMounts(k.root.mount),
              o = 0
            function a(e) {
              return k.syncFSRequests--, r(e)
            }
            function i(e) {
              if (e) return i.errored ? void 0 : ((i.errored = !0), a(e))
              ++o >= n.length && a(null)
            }
            n.forEach(e => {
              if (!e.type.syncfs) return i(null)
              e.type.syncfs(e, t, i)
            })
          },
          mount: (e, t, r) => {
            var n,
              o = '/' === r,
              a = !r
            if (o && k.root) throw new k.ErrnoError(10)
            if (!o && !a) {
              a = k.lookupPath(r, { follow_mount: !1 })
              if (((r = a.path), (n = a.node), k.isMountpoint(n))) throw new k.ErrnoError(10)
              if (!k.isDir(n.mode)) throw new k.ErrnoError(54)
            }
            ;(a = { type: e, opts: t, mountpoint: r, mounts: [] }), (t = e.mount(a))
            return (
              ((t.mount = a).root = t),
              o ? (k.root = t) : n && ((n.mounted = a), n.mount && n.mount.mounts.push(a)),
              t
            )
          },
          unmount: e => {
            e = k.lookupPath(e, { follow_mount: !1 })
            if (!k.isMountpoint(e.node)) throw new k.ErrnoError(28)
            var e = e.node,
              t = e.mounted,
              n = k.getMounts(t),
              t =
                (Object.keys(k.nameTable).forEach(e => {
                  for (var t = k.nameTable[e]; t; ) {
                    var r = t.name_next
                    n.includes(t.mount) && k.destroyNode(t), (t = r)
                  }
                }),
                (e.mounted = null),
                e.mount.mounts.indexOf(t))
            e.mount.mounts.splice(t, 1)
          },
          lookup: (e, t) => e.node_ops.lookup(e, t),
          mknod: (e, t, r) => {
            var n = k.lookupPath(e, { parent: !0 }).node,
              e = v.basename(e)
            if (!e || '.' === e || '..' === e) throw new k.ErrnoError(28)
            var o = k.mayCreate(n, e)
            if (o) throw new k.ErrnoError(o)
            if (n.node_ops.mknod) return n.node_ops.mknod(n, e, t, r)
            throw new k.ErrnoError(63)
          },
          create: (e, t) => k.mknod(e, (t = ((t = void 0 !== t ? t : 438) & 4095) | 32768), 0),
          mkdir: (e, t) => k.mknod(e, (t = ((t = void 0 !== t ? t : 511) & 1023) | 16384), 0),
          mkdirTree: (e, t) => {
            for (var r = e.split('/'), n = '', o = 0; o < r.length; ++o)
              if (r[o]) {
                n += '/' + r[o]
                try {
                  k.mkdir(n, t)
                } catch (e) {
                  if (20 != e.errno) throw e
                }
              }
          },
          mkdev: (e, t, r) => (void 0 === r && ((r = t), (t = 438)), k.mknod(e, (t |= 8192), r)),
          symlink: (e, t) => {
            if (!b.resolve(e)) throw new k.ErrnoError(44)
            var r = k.lookupPath(t, { parent: !0 }).node
            if (!r) throw new k.ErrnoError(44)
            var t = v.basename(t),
              n = k.mayCreate(r, t)
            if (n) throw new k.ErrnoError(n)
            if (r.node_ops.symlink) return r.node_ops.symlink(r, t, e)
            throw new k.ErrnoError(63)
          },
          rename: (e, t) => {
            var r = v.dirname(e),
              n = v.dirname(t),
              o = v.basename(e),
              a = v.basename(t),
              i = k.lookupPath(e, { parent: !0 }).node,
              s = k.lookupPath(t, { parent: !0 }).node
            if (!i || !s) throw new k.ErrnoError(44)
            if (i.mount !== s.mount) throw new k.ErrnoError(75)
            var l,
              u = k.lookupNode(i, o)
            if ('.' !== b.relative(e, n).charAt(0)) throw new k.ErrnoError(28)
            if ('.' !== b.relative(t, r).charAt(0)) throw new k.ErrnoError(55)
            try {
              l = k.lookupNode(s, a)
            } catch (e) {}
            if (u !== l) {
              ;(n = k.isDir(u.mode)), (t = k.mayDelete(i, o, n))
              if (t) throw new k.ErrnoError(t)
              if ((t = l ? k.mayDelete(s, a, n) : k.mayCreate(s, a))) throw new k.ErrnoError(t)
              if (!i.node_ops.rename) throw new k.ErrnoError(63)
              if (k.isMountpoint(u) || (l && k.isMountpoint(l))) throw new k.ErrnoError(10)
              if (s !== i && (t = k.nodePermissions(i, 'w'))) throw new k.ErrnoError(t)
              k.hashRemoveNode(u)
              try {
                i.node_ops.rename(u, s, a)
              } catch (e) {
                throw e
              } finally {
                k.hashAddNode(u)
              }
            }
          },
          rmdir: e => {
            var t = k.lookupPath(e, { parent: !0 }).node,
              e = v.basename(e),
              r = k.lookupNode(t, e),
              n = k.mayDelete(t, e, !0)
            if (n) throw new k.ErrnoError(n)
            if (!t.node_ops.rmdir) throw new k.ErrnoError(63)
            if (k.isMountpoint(r)) throw new k.ErrnoError(10)
            t.node_ops.rmdir(t, e), k.destroyNode(r)
          },
          readdir: e => {
            e = k.lookupPath(e, { follow: !0 }).node
            if (e.node_ops.readdir) return e.node_ops.readdir(e)
            throw new k.ErrnoError(54)
          },
          unlink: e => {
            var t = k.lookupPath(e, { parent: !0 }).node
            if (!t) throw new k.ErrnoError(44)
            var e = v.basename(e),
              r = k.lookupNode(t, e),
              n = k.mayDelete(t, e, !1)
            if (n) throw new k.ErrnoError(n)
            if (!t.node_ops.unlink) throw new k.ErrnoError(63)
            if (k.isMountpoint(r)) throw new k.ErrnoError(10)
            t.node_ops.unlink(t, e), k.destroyNode(r)
          },
          readlink: e => {
            e = k.lookupPath(e).node
            if (!e) throw new k.ErrnoError(44)
            if (e.node_ops.readlink) return b.resolve(k.getPath(e.parent), e.node_ops.readlink(e))
            throw new k.ErrnoError(28)
          },
          stat: (e, t) => {
            e = k.lookupPath(e, { follow: !t }).node
            if (!e) throw new k.ErrnoError(44)
            if (e.node_ops.getattr) return e.node_ops.getattr(e)
            throw new k.ErrnoError(63)
          },
          lstat: e => k.stat(e, !0),
          chmod: (e, t, r) => {
            r = 'string' == typeof e ? k.lookupPath(e, { follow: !r }).node : e
            if (!r.node_ops.setattr) throw new k.ErrnoError(63)
            r.node_ops.setattr(r, { mode: (4095 & t) | (-4096 & r.mode), timestamp: Date.now() })
          },
          lchmod: (e, t) => {
            k.chmod(e, t, !0)
          },
          fchmod: (e, t) => {
            e = k.getStream(e)
            if (!e) throw new k.ErrnoError(8)
            k.chmod(e.node, t)
          },
          chown: (e, t, r, n) => {
            n = 'string' == typeof e ? k.lookupPath(e, { follow: !n }).node : e
            if (!n.node_ops.setattr) throw new k.ErrnoError(63)
            n.node_ops.setattr(n, { timestamp: Date.now() })
          },
          lchown: (e, t, r) => {
            k.chown(e, t, r, !0)
          },
          fchown: (e, t, r) => {
            e = k.getStream(e)
            if (!e) throw new k.ErrnoError(8)
            k.chown(e.node, t, r)
          },
          truncate: (e, t) => {
            if (t < 0) throw new k.ErrnoError(28)
            e = 'string' == typeof e ? k.lookupPath(e, { follow: !0 }).node : e
            if (!e.node_ops.setattr) throw new k.ErrnoError(63)
            if (k.isDir(e.mode)) throw new k.ErrnoError(31)
            if (!k.isFile(e.mode)) throw new k.ErrnoError(28)
            var r = k.nodePermissions(e, 'w')
            if (r) throw new k.ErrnoError(r)
            e.node_ops.setattr(e, { size: t, timestamp: Date.now() })
          },
          ftruncate: (e, t) => {
            e = k.getStream(e)
            if (!e) throw new k.ErrnoError(8)
            if (0 == (2097155 & e.flags)) throw new k.ErrnoError(28)
            k.truncate(e.node, t)
          },
          utime: (e, t, r) => {
            e = k.lookupPath(e, { follow: !0 }).node
            e.node_ops.setattr(e, { timestamp: Math.max(t, r) })
          },
          open: (e, t, r) => {
            if ('' === e) throw new k.ErrnoError(44)
            var n
            if (
              ((r = void 0 === r ? 438 : r),
              (r =
                64 & (t = 'string' == typeof t ? k.modeStringToFlags(t) : t)
                  ? (4095 & r) | 32768
                  : 0),
              'object' == typeof e)
            )
              n = e
            else {
              e = v.normalize(e)
              try {
                n = k.lookupPath(e, { follow: !(131072 & t) }).node
              } catch (e) {}
            }
            var o = !1
            if (64 & t)
              if (n) {
                if (128 & t) throw new k.ErrnoError(20)
              } else (n = k.mknod(e, r, 0)), (o = !0)
            if (!n) throw new k.ErrnoError(44)
            if ((k.isChrdev(n.mode) && (t &= -513), 65536 & t && !k.isDir(n.mode)))
              throw new k.ErrnoError(54)
            if (!o) {
              r = k.mayOpen(n, t)
              if (r) throw new k.ErrnoError(r)
            }
            512 & t && !o && k.truncate(n, 0), (t &= -131713)
            r = k.createStream({
              node: n,
              path: k.getPath(n),
              flags: t,
              seekable: !0,
              position: 0,
              stream_ops: n.stream_ops,
              ungotten: [],
              error: !1,
            })
            return (
              r.stream_ops.open && r.stream_ops.open(r),
              !g.logReadFiles ||
                1 & t ||
                (k.readFiles || (k.readFiles = {}), e in k.readFiles || (k.readFiles[e] = 1)),
              r
            )
          },
          close: e => {
            if (k.isClosed(e)) throw new k.ErrnoError(8)
            e.getdents && (e.getdents = null)
            try {
              e.stream_ops.close && e.stream_ops.close(e)
            } catch (e) {
              throw e
            } finally {
              k.closeStream(e.fd)
            }
            e.fd = null
          },
          isClosed: e => null === e.fd,
          llseek: (e, t, r) => {
            if (k.isClosed(e)) throw new k.ErrnoError(8)
            if (!e.seekable || !e.stream_ops.llseek) throw new k.ErrnoError(70)
            if (0 != r && 1 != r && 2 != r) throw new k.ErrnoError(28)
            return (e.position = e.stream_ops.llseek(e, t, r)), (e.ungotten = []), e.position
          },
          read: (e, t, r, n, o) => {
            if (n < 0 || o < 0) throw new k.ErrnoError(28)
            if (k.isClosed(e)) throw new k.ErrnoError(8)
            if (1 == (2097155 & e.flags)) throw new k.ErrnoError(8)
            if (k.isDir(e.node.mode)) throw new k.ErrnoError(31)
            if (!e.stream_ops.read) throw new k.ErrnoError(28)
            var a = void 0 !== o
            if (a) {
              if (!e.seekable) throw new k.ErrnoError(70)
            } else o = e.position
            t = e.stream_ops.read(e, t, r, n, o)
            return a || (e.position += t), t
          },
          write: (e, t, r, n, o, a) => {
            if (n < 0 || o < 0) throw new k.ErrnoError(28)
            if (k.isClosed(e)) throw new k.ErrnoError(8)
            if (0 == (2097155 & e.flags)) throw new k.ErrnoError(8)
            if (k.isDir(e.node.mode)) throw new k.ErrnoError(31)
            if (!e.stream_ops.write) throw new k.ErrnoError(28)
            e.seekable && 1024 & e.flags && k.llseek(e, 0, 2)
            var i = void 0 !== o
            if (i) {
              if (!e.seekable) throw new k.ErrnoError(70)
            } else o = e.position
            t = e.stream_ops.write(e, t, r, n, o, a)
            return i || (e.position += t), t
          },
          allocate: (e, t, r) => {
            if (k.isClosed(e)) throw new k.ErrnoError(8)
            if (t < 0 || r <= 0) throw new k.ErrnoError(28)
            if (0 == (2097155 & e.flags)) throw new k.ErrnoError(8)
            if (!k.isFile(e.node.mode) && !k.isDir(e.node.mode)) throw new k.ErrnoError(43)
            if (!e.stream_ops.allocate) throw new k.ErrnoError(138)
            e.stream_ops.allocate(e, t, r)
          },
          mmap: (e, t, r, n, o) => {
            if (0 != (2 & n) && 0 == (2 & o) && 2 != (2097155 & e.flags)) throw new k.ErrnoError(2)
            if (1 == (2097155 & e.flags)) throw new k.ErrnoError(2)
            if (e.stream_ops.mmap) return e.stream_ops.mmap(e, t, r, n, o)
            throw new k.ErrnoError(43)
          },
          msync: (e, t, r, n, o) =>
            e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, n, o) : 0,
          munmap: e => 0,
          ioctl: (e, t, r) => {
            if (e.stream_ops.ioctl) return e.stream_ops.ioctl(e, t, r)
            throw new k.ErrnoError(59)
          },
          readFile: function (e) {
            let t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}
            if (
              ((t.flags = t.flags || 0),
              (t.encoding = t.encoding || 'binary'),
              'utf8' !== t.encoding && 'binary' !== t.encoding)
            )
              throw new Error('Invalid encoding type "' + t.encoding + '"')
            var r,
              n = k.open(e, t.flags),
              e = k.stat(e).size,
              o = new Uint8Array(e)
            return (
              k.read(n, o, 0, e, 0),
              'utf8' === t.encoding ? (r = i(o, 0)) : 'binary' === t.encoding && (r = o),
              k.close(n),
              r
            )
          },
          writeFile: function (e, t) {
            let r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}
            r.flags = r.flags || 577
            e = k.open(e, r.flags, r.mode)
            if ('string' == typeof t) {
              var n = new Uint8Array(re(t) + 1),
                o = te(t, n, 0, n.length)
              k.write(e, n, 0, o, void 0, r.canOwn)
            } else {
              if (!ArrayBuffer.isView(t)) throw new Error('Unsupported data type')
              k.write(e, t, 0, t.byteLength, void 0, r.canOwn)
            }
            k.close(e)
          },
          cwd: () => k.currentPath,
          chdir: e => {
            e = k.lookupPath(e, { follow: !0 })
            if (null === e.node) throw new k.ErrnoError(44)
            if (!k.isDir(e.node.mode)) throw new k.ErrnoError(54)
            var t = k.nodePermissions(e.node, 'x')
            if (t) throw new k.ErrnoError(t)
            k.currentPath = e.path
          },
          createDefaultDirectories: () => {
            k.mkdir('/tmp'), k.mkdir('/home'), k.mkdir('/home/web_user')
          },
          createDefaultDevices: () => {
            k.mkdir('/dev'),
              k.registerDevice(k.makedev(1, 3), { read: () => 0, write: (e, t, r, n, o) => n }),
              k.mkdev('/dev/null', k.makedev(1, 3)),
              o.register(k.makedev(5, 0), o.default_tty_ops),
              o.register(k.makedev(6, 0), o.default_tty1_ops),
              k.mkdev('/dev/tty', k.makedev(5, 0)),
              k.mkdev('/dev/tty1', k.makedev(6, 0))
            var e = (function () {
              var e
              if ('object' == typeof crypto && 'function' == typeof crypto.getRandomValues)
                return (e = new Uint8Array(1)), () => (crypto.getRandomValues(e), e[0])
              if (j)
                try {
                  var t = At.default
                  return () => t.randomBytes(1)[0]
                } catch (e) {}
              return () => w('randomDevice')
            })()
            k.createDevice('/dev', 'random', e),
              k.createDevice('/dev', 'urandom', e),
              k.mkdir('/dev/shm'),
              k.mkdir('/dev/shm/tmp')
          },
          createSpecialDirectories: () => {
            k.mkdir('/proc')
            var t = k.mkdir('/proc/self')
            k.mkdir('/proc/self/fd'),
              k.mount(
                {
                  mount: () => {
                    var e = k.createNode(t, 'fd', 16895, 73)
                    return (
                      (e.node_ops = {
                        lookup: (e, t) => {
                          var r = k.getStream(+t)
                          if (!r) throw new k.ErrnoError(8)
                          t = {
                            parent: null,
                            mount: { mountpoint: 'fake' },
                            node_ops: { readlink: () => r.path },
                          }
                          return (t.parent = t)
                        },
                      }),
                      e
                    )
                  },
                },
                {},
                '/proc/self/fd',
              )
          },
          createStandardStreams: () => {
            g.stdin
              ? k.createDevice('/dev', 'stdin', g.stdin)
              : k.symlink('/dev/tty', '/dev/stdin'),
              g.stdout
                ? k.createDevice('/dev', 'stdout', null, g.stdout)
                : k.symlink('/dev/tty', '/dev/stdout'),
              g.stderr
                ? k.createDevice('/dev', 'stderr', null, g.stderr)
                : k.symlink('/dev/tty1', '/dev/stderr'),
              k.open('/dev/stdin', 0),
              k.open('/dev/stdout', 1),
              k.open('/dev/stderr', 1)
          },
          ensureErrnoError: () => {
            k.ErrnoError ||
              ((k.ErrnoError = function (e, t) {
                ;(this.node = t),
                  (this.setErrno = function (e) {
                    this.errno = e
                  }),
                  this.setErrno(e),
                  (this.message = 'FS error')
              }),
              (k.ErrnoError.prototype = new Error()),
              (k.ErrnoError.prototype.constructor = k.ErrnoError),
              [44].forEach(e => {
                ;(k.genericErrors[e] = new k.ErrnoError(e)),
                  (k.genericErrors[e].stack = '<generic error, no stack>')
              }))
          },
          staticInit: () => {
            k.ensureErrnoError(),
              (k.nameTable = new Array(4096)),
              k.mount(E, {}, '/'),
              k.createDefaultDirectories(),
              k.createDefaultDevices(),
              k.createSpecialDirectories(),
              (k.filesystems = { MEMFS: E })
          },
          init: (e, t, r) => {
            ;(k.init.initialized = !0),
              k.ensureErrnoError(),
              (g.stdin = e || g.stdin),
              (g.stdout = t || g.stdout),
              (g.stderr = r || g.stderr),
              k.createStandardStreams()
          },
          quit: () => {
            k.init.initialized = !1
            for (var e = 0; e < k.streams.length; e++) {
              var t = k.streams[e]
              t && k.close(t)
            }
          },
          getMode: (e, t) => {
            var r = 0
            return e && (r |= 365), t && (r |= 146), r
          },
          findObject: (e, t) => {
            e = k.analyzePath(e, t)
            return e.exists ? e.object : null
          },
          analyzePath: (e, t) => {
            try {
              e = (n = k.lookupPath(e, { follow: !t })).path
            } catch (e) {}
            var r = {
              isRoot: !1,
              exists: !1,
              error: 0,
              name: null,
              path: null,
              object: null,
              parentExists: !1,
              parentPath: null,
              parentObject: null,
            }
            try {
              var n = k.lookupPath(e, { parent: !0 })
              ;(r.parentExists = !0),
                (r.parentPath = n.path),
                (r.parentObject = n.node),
                (r.name = v.basename(e)),
                (n = k.lookupPath(e, { follow: !t })),
                (r.exists = !0),
                (r.path = n.path),
                (r.object = n.node),
                (r.name = n.node.name),
                (r.isRoot = '/' === n.path)
            } catch (e) {
              r.error = e.errno
            }
            return r
          },
          createPath: (e, t, r, n) => {
            e = 'string' == typeof e ? e : k.getPath(e)
            for (var o = t.split('/').reverse(); o.length; ) {
              var a = o.pop()
              if (a) {
                var i = v.join2(e, a)
                try {
                  k.mkdir(i)
                } catch (e) {}
                e = i
              }
            }
            return i
          },
          createFile: (e, t, r, n, o) => {
            ;(e = v.join2('string' == typeof e ? e : k.getPath(e), t)), (t = k.getMode(n, o))
            return k.create(e, t)
          },
          createDataFile: (e, t, r, n, o, a) => {
            var i = t,
              t =
                (e && ((e = 'string' == typeof e ? e : k.getPath(e)), (i = t ? v.join2(e, t) : e)),
                k.getMode(n, o)),
              e = k.create(i, t)
            if (r) {
              if ('string' == typeof r) {
                for (var s = new Array(r.length), l = 0, u = r.length; l < u; ++l)
                  s[l] = r.charCodeAt(l)
                r = s
              }
              k.chmod(e, 146 | t)
              n = k.open(e, 577)
              k.write(n, r, 0, r.length, 0, a), k.close(n), k.chmod(e, t)
            }
            return e
          },
          createDevice: (e, t, l, i) => {
            var e = v.join2('string' == typeof e ? e : k.getPath(e), t),
              t = k.getMode(!!l, !!i),
              r =
                (k.createDevice.major || (k.createDevice.major = 64),
                k.makedev(k.createDevice.major++, 0))
            return (
              k.registerDevice(r, {
                open: e => {
                  e.seekable = !1
                },
                close: e => {
                  i && i.buffer && i.buffer.length && i(10)
                },
                read: (e, t, r, n, o) => {
                  for (var a, i = 0, s = 0; s < n; s++) {
                    try {
                      a = l()
                    } catch (e) {
                      throw new k.ErrnoError(29)
                    }
                    if (void 0 === a && 0 === i) throw new k.ErrnoError(6)
                    if (null == a) break
                    i++, (t[r + s] = a)
                  }
                  return i && (e.node.timestamp = Date.now()), i
                },
                write: (e, t, r, n, o) => {
                  for (var a = 0; a < n; a++)
                    try {
                      i(t[r + a])
                    } catch (e) {
                      throw new k.ErrnoError(29)
                    }
                  return n && (e.node.timestamp = Date.now()), a
                },
              }),
              k.mkdev(e, t, r)
            )
          },
          forceLoadFile: e => {
            if (e.isDevice || e.isFolder || e.link || e.contents) return !0
            if ('undefined' != typeof XMLHttpRequest)
              throw new Error(
                'Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.',
              )
            if (!t) throw new Error('Cannot load without read() or XMLHttpRequest.')
            try {
              ;(e.contents = pe(t(e.url), !0)), (e.usedBytes = e.contents.length)
            } catch (e) {
              throw new k.ErrnoError(29)
            }
          },
          createLazyFile: (e, t, i, r, n) => {
            function o() {
              ;(this.lengthKnown = !1), (this.chunks = [])
            }
            if (
              ((o.prototype.get = function (e) {
                var t
                if (!(e > this.length - 1 || e < 0))
                  return (t = e % this.chunkSize), (e = (e / this.chunkSize) | 0), this.getter(e)[t]
              }),
              (o.prototype.setDataGetter = function (e) {
                this.getter = e
              }),
              (o.prototype.cacheLength = function () {
                var e = new XMLHttpRequest()
                if (
                  (e.open('HEAD', i, !1),
                  e.send(null),
                  !((200 <= e.status && e.status < 300) || 304 === e.status))
                )
                  throw new Error("Couldn't load " + i + '. Status: ' + e.status)
                var t,
                  n = Number(e.getResponseHeader('Content-length')),
                  r = (t = e.getResponseHeader('Accept-Ranges')) && 'bytes' === t,
                  e = (t = e.getResponseHeader('Content-Encoding')) && 'gzip' === t,
                  o = 1048576,
                  a = (r || (o = n), this)
                a.setDataGetter(e => {
                  var t = e * o,
                    r = (e + 1) * o - 1,
                    r = Math.min(r, n - 1)
                  if (
                    (void 0 === a.chunks[e] &&
                      (a.chunks[e] = ((e, t) => {
                        if (t < e)
                          throw new Error(
                            'invalid range (' + e + ', ' + t + ') or no bytes requested!',
                          )
                        if (n - 1 < t)
                          throw new Error('only ' + n + ' bytes available! programmer error!')
                        var r = new XMLHttpRequest()
                        if (
                          (r.open('GET', i, !1),
                          n !== o && r.setRequestHeader('Range', 'bytes=' + e + '-' + t),
                          (r.responseType = 'arraybuffer'),
                          r.overrideMimeType &&
                            r.overrideMimeType('text/plain; charset=x-user-defined'),
                          r.send(null),
                          (200 <= r.status && r.status < 300) || 304 === r.status)
                        )
                          return void 0 !== r.response
                            ? new Uint8Array(r.response || [])
                            : pe(r.responseText || '', !0)
                        throw new Error("Couldn't load " + i + '. Status: ' + r.status)
                      })(t, r)),
                    void 0 === a.chunks[e])
                  )
                    throw new Error('doXHR failed!')
                  return a.chunks[e]
                }),
                  (!e && n) ||
                    ((o = n = 1),
                    (n = this.getter(0).length),
                    (o = n),
                    W(
                      'LazyFiles on gzip forces download of the whole file when length is accessed',
                    )),
                  (this._length = n),
                  (this._chunkSize = o),
                  (this.lengthKnown = !0)
              }),
              'undefined' != typeof XMLHttpRequest)
            ) {
              if (!d)
                throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'
              var a = new o(),
                a =
                  (Object.defineProperties(a, {
                    length: {
                      get: function () {
                        return this.lengthKnown || this.cacheLength(), this._length
                      },
                    },
                    chunkSize: {
                      get: function () {
                        return this.lengthKnown || this.cacheLength(), this._chunkSize
                      },
                    },
                  }),
                  { isDevice: !1, contents: a })
            } else a = { isDevice: !1, url: i }
            var s = k.createFile(e, t, a, r, n),
              l =
                (a.contents
                  ? (s.contents = a.contents)
                  : a.url && ((s.contents = null), (s.url = a.url)),
                Object.defineProperties(s, {
                  usedBytes: {
                    get: function () {
                      return this.contents.length
                    },
                  },
                }),
                {})
            function u(e, t, r, n, o) {
              var a = e.node.contents
              if (o >= a.length) return 0
              var i = Math.min(a.length - o, n)
              if (a.slice) for (var s = 0; s < i; s++) t[r + s] = a[o + s]
              else for (s = 0; s < i; s++) t[r + s] = a.get(o + s)
              return i
            }
            return (
              Object.keys(s.stream_ops).forEach(e => {
                var t = s.stream_ops[e]
                l[e] = function () {
                  return k.forceLoadFile(s), t.apply(null, arguments)
                }
              }),
              (l.read = (e, t, r, n, o) => (k.forceLoadFile(s), u(e, t, r, n, o))),
              (l.mmap = (e, t, r, n, o) => {
                k.forceLoadFile(s)
                var a = he(t)
                if (a) return u(e, c, a, t, r), { ptr: a, allocated: !0 }
                throw new k.ErrnoError(48)
              }),
              (s.stream_ops = l),
              s
            )
          },
          createPreloadedFile: (r, n, e, o, a, i, s, l, u, d) => {
            var t,
              c,
              f,
              p = n ? b.resolve(v.join2(r, n)) : r
            function h(e) {
              function t(e) {
                d && d(), l || k.createDataFile(r, n, e, o, a, u), i && i(), se()
              }
              Browser.handledByPreloadPlugin(e, p, t, () => {
                s && s(), se()
              }) || t(e)
            }
            ie(),
              'string' == typeof e
                ? ((c = s),
                  (f = 'al ' + (t = e)),
                  m(
                    t,
                    e => {
                      q(e, 'Loading data file "' + t + '" failed (no arrayBuffer).'),
                        h(new Uint8Array(e)),
                        f && se()
                    },
                    e => {
                      if (!c) throw 'Loading data file "' + t + '" failed.'
                      c()
                    },
                  ),
                  f && ie())
                : h(e)
          },
          indexedDB: () =>
            window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB,
          DB_NAME: () => 'EM_FS_' + window.location.pathname,
          DB_VERSION: 20,
          DB_STORE_NAME: 'FILE_DATA',
          saveFilesToDB: (i, s, l) => {
            ;(s = s || (() => {})), (l = l || (() => {}))
            var e = k.indexedDB()
            try {
              var u = e.open(k.DB_NAME(), k.DB_VERSION)
            } catch (i) {
              return l(i)
            }
            ;(u.onupgradeneeded = () => {
              W('creating db'), u.result.createObjectStore(k.DB_STORE_NAME)
            }),
              (u.onsuccess = () => {
                var e = u.result.transaction([k.DB_STORE_NAME], 'readwrite'),
                  t = e.objectStore(k.DB_STORE_NAME),
                  r = 0,
                  n = 0,
                  o = i.length
                function a() {
                  ;(0 == n ? s : l)()
                }
                i.forEach(e => {
                  e = t.put(k.analyzePath(e).object.contents, e)
                  ;(e.onsuccess = () => {
                    ++r + n == o && a()
                  }),
                    (e.onerror = () => {
                      r + ++n == o && a()
                    })
                }),
                  (e.onerror = l)
              }),
              (u.onerror = l)
          },
          loadFilesFromDB: (s, l, u) => {
            ;(l = l || (() => {})), (u = u || (() => {}))
            var e = k.indexedDB()
            try {
              var d = e.open(k.DB_NAME(), k.DB_VERSION)
            } catch (s) {
              return u(s)
            }
            ;(d.onupgradeneeded = u),
              (d.onsuccess = () => {
                var e = d.result
                try {
                  var t = e.transaction([k.DB_STORE_NAME], 'readonly')
                } catch (e) {
                  return void u(e)
                }
                var r = t.objectStore(k.DB_STORE_NAME),
                  n = 0,
                  o = 0,
                  a = s.length
                function i() {
                  ;(0 == o ? l : u)()
                }
                s.forEach(e => {
                  var t = r.get(e)
                  ;(t.onsuccess = () => {
                    k.analyzePath(e).exists && k.unlink(e),
                      k.createDataFile(v.dirname(e), v.basename(e), t.result, !0, !0, !0),
                      ++n + o == a && i()
                  }),
                    (t.onerror = () => {
                      n + ++o == a && i()
                    })
                }),
                  (t.onerror = u)
              }),
              (d.onerror = u)
          },
        },
        T = {
          DEFAULT_POLLMASK: 5,
          calculateAt: function (e, t, r) {
            if (v.isAbs(t)) return t
            var n
            if (-100 === e) n = k.cwd()
            else {
              e = k.getStream(e)
              if (!e) throw new k.ErrnoError(8)
              n = e.path
            }
            if (0 != t.length) return v.join2(n, t)
            if (r) return n
            throw new k.ErrnoError(44)
          },
          doStat: function (e, t, r) {
            try {
              var n = e(t)
            } catch (e) {
              if (e && e.node && v.normalize(t) !== v.normalize(k.getPath(e.node))) return -54
              throw e
            }
            return (
              (u[r >> 2] = n.dev),
              (u[(r + 4) >> 2] = 0),
              (u[(r + 8) >> 2] = n.ino),
              (u[(r + 12) >> 2] = n.mode),
              (u[(r + 16) >> 2] = n.nlink),
              (u[(r + 20) >> 2] = n.uid),
              (u[(r + 24) >> 2] = n.gid),
              (u[(r + 28) >> 2] = n.rdev),
              (u[(r + 32) >> 2] = 0),
              (_ = [
                n.size >>> 0,
                ((y = n.size),
                1 <= +Math.abs(y)
                  ? 0 < y
                    ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              (u[(r + 40) >> 2] = _[0]),
              (u[(r + 44) >> 2] = _[1]),
              (u[(r + 48) >> 2] = 4096),
              (u[(r + 52) >> 2] = n.blocks),
              (_ = [
                Math.floor(n.atime.getTime() / 1e3) >>> 0,
                ((y = Math.floor(n.atime.getTime() / 1e3)),
                1 <= +Math.abs(y)
                  ? 0 < y
                    ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              (u[(r + 56) >> 2] = _[0]),
              (u[(r + 60) >> 2] = _[1]),
              (u[(r + 64) >> 2] = 0),
              (_ = [
                Math.floor(n.mtime.getTime() / 1e3) >>> 0,
                ((y = Math.floor(n.mtime.getTime() / 1e3)),
                1 <= +Math.abs(y)
                  ? 0 < y
                    ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              (u[(r + 72) >> 2] = _[0]),
              (u[(r + 76) >> 2] = _[1]),
              (u[(r + 80) >> 2] = 0),
              (_ = [
                Math.floor(n.ctime.getTime() / 1e3) >>> 0,
                ((y = Math.floor(n.ctime.getTime() / 1e3)),
                1 <= +Math.abs(y)
                  ? 0 < y
                    ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              (u[(r + 88) >> 2] = _[0]),
              (u[(r + 92) >> 2] = _[1]),
              (u[(r + 96) >> 2] = 0),
              (_ = [
                n.ino >>> 0,
                ((y = n.ino),
                1 <= +Math.abs(y)
                  ? 0 < y
                    ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                    : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                  : 0),
              ]),
              (u[(r + 104) >> 2] = _[0]),
              (u[(r + 108) >> 2] = _[1]),
              0
            )
          },
          doMsync: function (e, t, r, n, o) {
            e = f.slice(e, e + r)
            k.msync(t, e, o, r, n)
          },
          varargs: void 0,
          get: function () {
            return (T.varargs += 4), u[(T.varargs - 4) >> 2]
          },
          getStr: function (e) {
            return ee(e)
          },
          getStreamFromFD: function (e) {
            e = k.getStream(e)
            if (e) return e
            throw new k.ErrnoError(8)
          },
        }
      function me(e) {
        switch (e) {
          case 1:
            return 0
          case 2:
            return 1
          case 4:
            return 2
          case 8:
            return 3
          default:
            throw new TypeError('Unknown type size: ' + e)
        }
      }
      var ge = void 0
      function B(e) {
        for (var t = '', r = e; f[r]; ) t += ge[f[r++]]
        return t
      }
      var A = {},
        D = {},
        ye = {}
      function _e(e) {
        if (void 0 === e) return '_unknown'
        var t = (e = e.replace(/[^a-zA-Z0-9_]/g, '$')).charCodeAt(0)
        return 48 <= t && t <= 57 ? '_' + e : e
      }
      function we(e, t) {
        return (
          (e = _e(e)),
          new Function(
            'body',
            'return function ' +
              e +
              '() {\n    "use strict";    return body.apply(this, arguments);\n};\n',
          )(t)
        )
      }
      function ve(e, t) {
        var r = we(t, function (e) {
          ;(this.name = t), (this.message = e)
          e = new Error(e).stack
          void 0 !== e &&
            (this.stack = this.toString() + '\n' + e.replace(/^Error(:[^\n]*)?\n/, ''))
        })
        return (
          (r.prototype = Object.create(e.prototype)),
          ((r.prototype.constructor = r).prototype.toString = function () {
            return void 0 === this.message ? this.name : this.name + ': ' + this.message
          }),
          r
        )
      }
      var S = void 0
      function C(e) {
        throw new S(e)
      }
      var be = void 0
      function Ee(e) {
        throw new be(e)
      }
      function ke(n, t, o) {
        function r(e) {
          var t = o(e)
          t.length !== n.length && Ee('Mismatched type converter count')
          for (var r = 0; r < n.length; ++r) F(n[r], t[r])
        }
        n.forEach(function (e) {
          ye[e] = t
        })
        var a = new Array(t.length),
          i = [],
          s = 0
        t.forEach((e, t) => {
          D.hasOwnProperty(e)
            ? (a[t] = D[e])
            : (i.push(e),
              A.hasOwnProperty(e) || (A[e] = []),
              A[e].push(() => {
                ;(a[t] = D[e]), ++s === i.length && r(a)
              }))
        }),
          0 === i.length && r(a)
      }
      function F(e, t, r) {
        r = 2 < arguments.length && void 0 !== r ? r : {}
        if (!('argPackAdvance' in t))
          throw new TypeError('registerType registeredInstance requires argPackAdvance')
        var n = t.name
        if (
          (e || C('type "' + n + '" must have a positive integer typeid pointer'),
          D.hasOwnProperty(e))
        ) {
          if (r.ignoreDuplicateRegistrations) return
          C("Cannot register type '" + n + "' twice")
        }
        ;(D[e] = t),
          delete ye[e],
          A.hasOwnProperty(e) && ((r = A[e]), delete A[e], r.forEach(e => e()))
      }
      function Te(e) {
        C(e.$$.ptrType.registeredClass.name + ' instance already deleted')
      }
      var Be = !1
      function Ae(e) {}
      function De(e) {
        --e.count.value,
          0 === e.count.value &&
            ((e = e).smartPtr
              ? e.smartPtrType.rawDestructor(e.smartPtr)
              : e.ptrType.registeredClass.rawDestructor(e.ptr))
      }
      var Se = {}
      var Ce = []
      function Fe() {
        for (; Ce.length; ) {
          var e = Ce.pop()
          ;(e.$$.deleteScheduled = !1), e.delete()
        }
      }
      var Ue = void 0
      var Pe = {}
      function xe(e, t) {
        return (
          (t.ptrType && t.ptr) || Ee('makeClassHandle requires ptr and ptrType'),
          !!t.smartPtrType != !!t.smartPtr &&
            Ee('Both smartPtrType and smartPtr must be specified'),
          (t.count = { value: 1 }),
          Le(Object.create(e, { $$: { value: t } }))
        )
      }
      function Le(e) {
        return 'undefined' == typeof FinalizationRegistry
          ? ((Le = e => e), e)
          : ((Be = new FinalizationRegistry(e => {
              De(e.$$)
            })),
            (Ae = e => Be.unregister(e)),
            (Le = e => {
              var t = e.$$
              return t.smartPtr && Be.register(e, { $$: t }, e), e
            })(e))
      }
      function U() {}
      function Re(e, t, r) {
        var n
        void 0 === e[t].overloadTable &&
          ((n = e[t]),
          (e[t] = function () {
            return (
              e[t].overloadTable.hasOwnProperty(arguments.length) ||
                C(
                  "Function '" +
                    r +
                    "' called with an invalid number of arguments (" +
                    arguments.length +
                    ') - expects one of (' +
                    e[t].overloadTable +
                    ')!',
                ),
              e[t].overloadTable[arguments.length].apply(this, arguments)
            )
          }),
          (e[t].overloadTable = []),
          (e[t].overloadTable[n.argCount] = n))
      }
      function Ie(e, t, r, n, o, a, i, s) {
        ;(this.name = e),
          (this.constructor = t),
          (this.instancePrototype = r),
          (this.rawDestructor = n),
          (this.baseClass = o),
          (this.getActualType = a),
          (this.upcast = i),
          (this.downcast = s),
          (this.pureVirtualFunctions = [])
      }
      function Me(e, t, r) {
        for (; t !== r; )
          t.upcast ||
            C('Expected null or instance of ' + r.name + ', got an instance of ' + t.name),
            (e = t.upcast(e)),
            (t = t.baseClass)
        return e
      }
      function $e(e, t) {
        if (null === t) return this.isReference && C('null is not a valid ' + this.name), 0
        t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
          t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name)
        var r = t.$$.ptrType.registeredClass
        return Me(t.$$.ptr, r, this.registeredClass)
      }
      function Ne(e, t) {
        if (null === t)
          return (
            this.isReference && C('null is not a valid ' + this.name),
            this.isSmartPointer
              ? ((n = this.rawConstructor()), null !== e && e.push(this.rawDestructor, n), n)
              : 0
          )
        t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
          t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name),
          !this.isConst &&
            t.$$.ptrType.isConst &&
            C(
              'Cannot convert argument of type ' +
                (t.$$.smartPtrType || t.$$.ptrType).name +
                ' to parameter type ' +
                this.name,
            )
        var r,
          n,
          o = t.$$.ptrType.registeredClass
        if (((n = Me(t.$$.ptr, o, this.registeredClass)), this.isSmartPointer))
          switch (
            (void 0 === t.$$.smartPtr && C('Passing raw pointer to smart pointer is illegal'),
            this.sharingPolicy)
          ) {
            case 0:
              t.$$.smartPtrType === this
                ? (n = t.$$.smartPtr)
                : C(
                    'Cannot convert argument of type ' +
                      (t.$$.smartPtrType || t.$$.ptrType).name +
                      ' to parameter type ' +
                      this.name,
                  )
              break
            case 1:
              n = t.$$.smartPtr
              break
            case 2:
              t.$$.smartPtrType === this
                ? (n = t.$$.smartPtr)
                : ((r = t.clone()),
                  (n = this.rawShare(
                    n,
                    Qe.toHandle(function () {
                      r.delete()
                    }),
                  )),
                  null !== e && e.push(this.rawDestructor, n))
              break
            default:
              C('Unsupporting sharing policy')
          }
        return n
      }
      function Oe(e, t) {
        if (null === t) return this.isReference && C('null is not a valid ' + this.name), 0
        t.$$ || C('Cannot pass "' + et(t) + '" as a ' + this.name),
          t.$$.ptr || C('Cannot pass deleted object as a pointer of type ' + this.name),
          t.$$.ptrType.isConst &&
            C(
              'Cannot convert argument of type ' +
                t.$$.ptrType.name +
                ' to parameter type ' +
                this.name,
            )
        var r = t.$$.ptrType.registeredClass
        return Me(t.$$.ptr, r, this.registeredClass)
      }
      function Ge(e) {
        return this.fromWireType(u[e >> 2])
      }
      function P(e, t, r, n, o, a, i, s, l, u, d) {
        ;(this.name = e),
          (this.registeredClass = t),
          (this.isReference = r),
          (this.isConst = n),
          (this.isSmartPointer = o),
          (this.pointeeType = a),
          (this.sharingPolicy = i),
          (this.rawGetPointee = s),
          (this.rawConstructor = l),
          (this.rawShare = u),
          (this.rawDestructor = d),
          o || void 0 !== t.baseClass
            ? (this.toWireType = Ne)
            : ((this.toWireType = n ? $e : Oe), (this.destructorFunction = null))
      }
      var Ve = []
      function ze(e) {
        var t = Ve[e]
        return t || (e >= Ve.length && (Ve.length = e + 1), (Ve[e] = t = Z.get(e))), t
      }
      function x(e, t) {
        var o,
          a,
          i,
          r = (e = B(e)).includes('j')
            ? ((o = e),
              (a = t),
              (i = []),
              function () {
                return (
                  (i.length = 0),
                  Object.assign(i, arguments),
                  (t = a),
                  (r = i),
                  (e = o).includes('j')
                    ? ((n = t),
                      (e = g['dynCall_' + e]),
                      r && r.length ? e.apply(null, [n].concat(r)) : e.call(null, n))
                    : ze(t).apply(null, r)
                )
                var e, t, r, n
              })
            : ze(t)
        return (
          'function' != typeof r && C('unknown function pointer with signature ' + e + ': ' + t), r
        )
      }
      var je = void 0
      function We(e) {
        var e = wt(e),
          t = B(e)
        return R(e), t
      }
      function He(e, t) {
        var r = [],
          n = {}
        throw (
          (t.forEach(function e(t) {
            n[t] || D[t] || (ye[t] ? ye[t].forEach(e) : (r.push(t), (n[t] = !0)))
          }),
          new je(e + ': ' + r.map(We).join([', '])))
        )
      }
      function qe(e, t) {
        for (var r = [], n = 0; n < e; n++) r.push(p[(t + 4 * n) >> 2])
        return r
      }
      function Xe(e) {
        for (; e.length; ) {
          var t = e.pop()
          e.pop()(t)
        }
      }
      function Ke(e, t) {
        if (!(e instanceof Function))
          throw new TypeError(
            'new_ called with constructor type ' + typeof e + ' which is not a function',
          )
        var r = we(e.name || 'unknownFunctionName', function () {}),
          r = ((r.prototype = e.prototype), new r()),
          e = e.apply(r, t)
        return e instanceof Object ? e : r
      }
      function Ye(e, t, r, n, o) {
        var a = t.length
        a < 2 && C("argTypes array size mismatch! Must at least get return value and 'this' types!")
        for (var r = null !== t[1] && null !== r, i = !1, s = 1; s < t.length; ++s)
          if (null !== t[s] && void 0 === t[s].destructorFunction) {
            i = !0
            break
          }
        for (var l = 'void' !== t[0].name, u = '', d = '', s = 0; s < a - 2; ++s)
          (u += (0 !== s ? ', ' : '') + 'arg' + s),
            (d += (0 !== s ? ', ' : '') + 'arg' + s + 'Wired')
        var c =
            'return function ' +
            _e(e) +
            '(' +
            u +
            ') {\nif (arguments.length !== ' +
            (a - 2) +
            ") {\nthrowBindingError('function " +
            e +
            " called with ' + arguments.length + ' arguments, expected " +
            (a - 2) +
            " args!');\n}\n",
          f = (i && (c += 'var destructors = [];\n'), i ? 'destructors' : 'null'),
          p = ['throwBindingError', 'invoker', 'fn', 'runDestructors', 'retType', 'classParam'],
          h = [C, n, o, Xe, t[0], t[1]]
        for (
          r && (c += 'var thisWired = classParam.toWireType(' + f + ', this);\n'), s = 0;
          s < a - 2;
          ++s
        )
          (c +=
            'var arg' +
            s +
            'Wired = argType' +
            s +
            '.toWireType(' +
            f +
            ', arg' +
            s +
            '); // ' +
            t[s + 2].name +
            '\n'),
            p.push('argType' + s),
            h.push(t[s + 2])
        if (
          ((c +=
            (l ? 'var rv = ' : '') +
            'invoker(fn' +
            (0 < (d = r ? 'thisWired' + (0 < d.length ? ', ' : '') + d : d).length ? ', ' : '') +
            d +
            ');\n'),
          i)
        )
          c += 'runDestructors(destructors);\n'
        else
          for (s = r ? 1 : 2; s < t.length; ++s) {
            var m = 1 === s ? 'thisWired' : 'arg' + (s - 2) + 'Wired'
            null !== t[s].destructorFunction &&
              ((c += m + '_dtor(' + m + '); // ' + t[s].name + '\n'),
              p.push(m + '_dtor'),
              h.push(t[s].destructorFunction))
          }
        return (
          l && (c += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'),
          p.push((c += '}\n')),
          Ke(Function, p).apply(null, h)
        )
      }
      var Je = [],
        L = [{}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }]
      function Ze(e) {
        4 < e && 0 == --L[e].refcount && ((L[e] = void 0), Je.push(e))
      }
      var Qe = {
        toValue: e => (e || C('Cannot use deleted val. handle = ' + e), L[e].value),
        toHandle: e => {
          switch (e) {
            case void 0:
              return 1
            case null:
              return 2
            case !0:
              return 3
            case !1:
              return 4
            default:
              var t = Je.length ? Je.pop() : L.length
              return (L[t] = { refcount: 1, value: e }), t
          }
        },
      }
      function et(e) {
        if (null === e) return 'null'
        var t = typeof e
        return 'object' == t || 'array' == t || 'function' == t ? e.toString() : '' + e
      }
      var tt = 'undefined' != typeof TextDecoder ? new TextDecoder('utf-16le') : void 0
      function rt(e, t) {
        for (var r, n = e >> 1, o = n + t / 2; !(o <= n) && K[n]; ) ++n
        if (32 < (r = n << 1) - e && tt) return tt.decode(f.subarray(e, r))
        for (var a = '', i = 0; !(t / 2 <= i); ++i) {
          var s = l[(e + 2 * i) >> 1]
          if (0 == s) break
          a += String.fromCharCode(s)
        }
        return a
      }
      function nt(e, t, r) {
        if ((r = void 0 === r ? 2147483647 : r) < 2) return 0
        for (var n = t, o = (r -= 2) < 2 * e.length ? r / 2 : e.length, a = 0; a < o; ++a) {
          var i = e.charCodeAt(a)
          ;(l[t >> 1] = i), (t += 2)
        }
        return (l[t >> 1] = 0), t - n
      }
      function ot(e) {
        return 2 * e.length
      }
      function at(e, t) {
        for (var r = 0, n = ''; !(t / 4 <= r); ) {
          var o,
            a = u[(e + 4 * r) >> 2]
          if (0 == a) break
          ++r,
            65536 <= a
              ? ((o = a - 65536), (n += String.fromCharCode(55296 | (o >> 10), 56320 | (1023 & o))))
              : (n += String.fromCharCode(a))
        }
        return n
      }
      function it(e, t, r) {
        if ((r = void 0 === r ? 2147483647 : r) < 4) return 0
        for (var n = t, o = n + r - 4, a = 0; a < e.length; ++a) {
          var i = e.charCodeAt(a)
          if (
            (55296 <= i &&
              i <= 57343 &&
              (i = (65536 + ((1023 & i) << 10)) | (1023 & e.charCodeAt(++a))),
            (u[t >> 2] = i),
            (t += 4) + 4 > o)
          )
            break
        }
        return (u[t >> 2] = 0), t - n
      }
      function st(e) {
        for (var t = 0, r = 0; r < e.length; ++r) {
          var n = e.charCodeAt(r)
          55296 <= n && n <= 57343 && ++r, (t += 4)
        }
        return t
      }
      var lt = {},
        ut = [],
        dt = [],
        ct = {}
      function ft() {
        if (!ft.strings) {
          var e = {
            USER: 'web_user',
            LOGNAME: 'web_user',
            PATH: '/',
            PWD: '/',
            HOME: '/home/web_user',
            LANG:
              (
                ('object' == typeof navigator && navigator.languages && navigator.languages[0]) ||
                'C'
              ).replace('-', '_') + '.UTF-8',
            _: V || './this.program',
          }
          for (t in ct) void 0 === ct[t] ? delete e[t] : (e[t] = ct[t])
          var t,
            r = []
          for (t in e) r.push(t + '=' + e[t])
          ft.strings = r
        }
        return ft.strings
      }
      function pt(e, t, r, n) {
        ;(this.parent = e = e || this),
          (this.mount = e.mount),
          (this.mounted = null),
          (this.id = k.nextInode++),
          (this.name = t),
          (this.mode = r),
          (this.node_ops = {}),
          (this.stream_ops = {}),
          (this.rdev = n)
      }
      Object.defineProperties(pt.prototype, {
        read: {
          get: function () {
            return 365 == (365 & this.mode)
          },
          set: function (e) {
            e ? (this.mode |= 365) : (this.mode &= -366)
          },
        },
        write: {
          get: function () {
            return 146 == (146 & this.mode)
          },
          set: function (e) {
            e ? (this.mode |= 146) : (this.mode &= -147)
          },
        },
        isFolder: {
          get: function () {
            return k.isDir(this.mode)
          },
        },
        isDevice: {
          get: function () {
            return k.isChrdev(this.mode)
          },
        },
      }),
        (k.FSNode = pt),
        k.staticInit()
      for (var ht = new Array(256), mt = 0; mt < 256; ++mt) ht[mt] = String.fromCharCode(mt)
      ;(ge = ht),
        (S = g.BindingError = ve(Error, 'BindingError')),
        (be = g.InternalError = ve(Error, 'InternalError')),
        (U.prototype.isAliasOf = function (e) {
          if (!(this instanceof U)) return !1
          if (!(e instanceof U)) return !1
          for (
            var t = this.$$.ptrType.registeredClass,
              r = this.$$.ptr,
              n = e.$$.ptrType.registeredClass,
              o = e.$$.ptr;
            t.baseClass;

          )
            (r = t.upcast(r)), (t = t.baseClass)
          for (; n.baseClass; ) (o = n.upcast(o)), (n = n.baseClass)
          return t === n && r === o
        }),
        (U.prototype.clone = function () {
          if ((this.$$.ptr || Te(this), this.$$.preservePointerOnDelete))
            return (this.$$.count.value += 1), this
          var e = Le(
            Object.create(Object.getPrototypeOf(this), {
              $$: {
                value: {
                  count: (e = this.$$).count,
                  deleteScheduled: e.deleteScheduled,
                  preservePointerOnDelete: e.preservePointerOnDelete,
                  ptr: e.ptr,
                  ptrType: e.ptrType,
                  smartPtr: e.smartPtr,
                  smartPtrType: e.smartPtrType,
                },
              },
            }),
          )
          return (e.$$.count.value += 1), (e.$$.deleteScheduled = !1), e
        }),
        (U.prototype.delete = function () {
          this.$$.ptr || Te(this),
            this.$$.deleteScheduled &&
              !this.$$.preservePointerOnDelete &&
              C('Object already scheduled for deletion'),
            Ae(this),
            De(this.$$),
            this.$$.preservePointerOnDelete || ((this.$$.smartPtr = void 0), (this.$$.ptr = void 0))
        }),
        (U.prototype.isDeleted = function () {
          return !this.$$.ptr
        }),
        (U.prototype.deleteLater = function () {
          return (
            this.$$.ptr || Te(this),
            this.$$.deleteScheduled &&
              !this.$$.preservePointerOnDelete &&
              C('Object already scheduled for deletion'),
            Ce.push(this),
            1 === Ce.length && Ue && Ue(Fe),
            (this.$$.deleteScheduled = !0),
            this
          )
        }),
        (g.getInheritedInstanceCount = function () {
          return Object.keys(Pe).length
        }),
        (g.getLiveInheritedInstances = function () {
          var e,
            t = []
          for (e in Pe) Pe.hasOwnProperty(e) && t.push(Pe[e])
          return t
        }),
        (g.flushPendingDeletes = Fe),
        (g.setDelayFunction = function (e) {
          ;(Ue = e), Ce.length && Ue && Ue(Fe)
        }),
        (P.prototype.getPointee = function (e) {
          return (e = this.rawGetPointee ? this.rawGetPointee(e) : e)
        }),
        (P.prototype.destructor = function (e) {
          this.rawDestructor && this.rawDestructor(e)
        }),
        (P.prototype.argPackAdvance = 8),
        (P.prototype.readValueFromPointer = Ge),
        (P.prototype.deleteObject = function (e) {
          null !== e && e.delete()
        }),
        (P.prototype.fromWireType = function (e) {
          var t = this.getPointee(e)
          if (!t) return this.destructor(e), null
          if (
            ((n = (function (e, t) {
              for (void 0 === t && C('ptr should not be undefined'); e.baseClass; )
                (t = e.upcast(t)), (e = e.baseClass)
              return t
            })((n = this.registeredClass), (n = t))),
            void 0 !== (n = Pe[n]))
          ) {
            if (0 === n.$$.count.value) return (n.$$.ptr = t), (n.$$.smartPtr = e), n.clone()
            n = n.clone()
            return this.destructor(e), n
          }
          function r() {
            return this.isSmartPointer
              ? xe(this.registeredClass.instancePrototype, {
                  ptrType: this.pointeeType,
                  ptr: t,
                  smartPtrType: this,
                  smartPtr: e,
                })
              : xe(this.registeredClass.instancePrototype, { ptrType: this, ptr: e })
          }
          if (((n = this.registeredClass.getActualType(t)), !(n = Se[n]))) return r.call(this)
          var n = this.isConst ? n.constPointerType : n.pointerType,
            o = (function e(t, r, n) {
              if (r === n) return t
              if (void 0 === n.baseClass) return null
              t = e(t, r, n.baseClass)
              return null === t ? null : n.downcast(t)
            })(t, this.registeredClass, n.registeredClass)
          return null === o
            ? r.call(this)
            : this.isSmartPointer
            ? xe(n.registeredClass.instancePrototype, {
                ptrType: n,
                ptr: o,
                smartPtrType: this,
                smartPtr: e,
              })
            : xe(n.registeredClass.instancePrototype, { ptrType: n, ptr: o })
        }),
        (je = g.UnboundTypeError = ve(Error, 'UnboundTypeError')),
        (g.count_emval_handles = function () {
          for (var e = 0, t = 5; t < L.length; ++t) void 0 !== L[t] && ++e
          return e
        }),
        (g.get_first_emval = function () {
          for (var e = 5; e < L.length; ++e) if (void 0 !== L[e]) return L[e]
          return null
        })
      var gt = {
          s: function (e) {
            return yt(e + 24) + 24
          },
          r: function (e, t, r) {
            throw (new fe(e).init(t, r), e)
          },
          C: function (e, t, r) {
            T.varargs = r
            try {
              var n = T.getStreamFromFD(e)
              switch (t) {
                case 0:
                  return (o = T.get()) < 0 ? -28 : k.createStream(n, o).fd
                case 1:
                case 2:
                case 6:
                case 7:
                  return 0
                case 3:
                  return n.flags
                case 4:
                  var o = T.get()
                  return (n.flags |= o), 0
                case 5:
                  return (o = T.get()), (l[(o + 0) >> 1] = 2), 0
                case 16:
                case 8:
                default:
                  return -28
                case 9:
                  return (u[_t() >> 2] = 28), -1
              }
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return -e.errno
              throw e
            }
          },
          v: function (e, t, r, n) {
            T.varargs = n
            try {
              ;(t = T.getStr(t)), (t = T.calculateAt(e, t))
              var o = n ? T.get() : 0
              return k.open(t, r, o).fd
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return -e.errno
              throw e
            }
          },
          u: function (e, t, r, n, o) {},
          E: function (e, r, n, o, a) {
            var i = me(n)
            F(e, {
              name: (r = B(r)),
              fromWireType: function (e) {
                return !!e
              },
              toWireType: function (e, t) {
                return t ? o : a
              },
              argPackAdvance: 8,
              readValueFromPointer: function (e) {
                var t
                if (1 === n) t = c
                else if (2 === n) t = l
                else {
                  if (4 !== n) throw new TypeError('Unknown boolean type size: ' + r)
                  t = u
                }
                return this.fromWireType(t[e >> i])
              },
              destructorFunction: null,
            })
          },
          m: function (l, e, t, u, r, d, n, c, o, f, p, a, h) {
            ;(p = B(p)), (d = x(r, d)), (c = c && x(n, c)), (f = f && x(o, f)), (h = x(a, h))
            var i,
              m = _e(p)
            ;(r = m),
              (n = function () {
                He('Cannot construct ' + p + ' due to unbound types', [u])
              }),
              g.hasOwnProperty(r)
                ? (C("Cannot register public name '" + r + "' twice"),
                  Re(g, r, r),
                  g.hasOwnProperty(i) &&
                    C(
                      'Cannot register multiple overloads of a function with the same number of arguments (' +
                        i +
                        ')!',
                    ),
                  (g[r].overloadTable[i] = n))
                : (g[r] = n),
              ke([l, e, t], u ? [u] : [], function (e) {
                ;(e = e[0]), (e = u ? (i = e.registeredClass).instancePrototype : U.prototype)
                var t,
                  r,
                  n = we(m, function () {
                    if (Object.getPrototypeOf(this) !== o)
                      throw new S("Use 'new' to construct " + p)
                    if (void 0 === a.constructor_body)
                      throw new S(p + ' has no accessible constructor')
                    var e = a.constructor_body[arguments.length]
                    if (void 0 === e)
                      throw new S(
                        'Tried to invoke ctor of ' +
                          p +
                          ' with invalid number of parameters (' +
                          arguments.length +
                          ') - expected (' +
                          Object.keys(a.constructor_body).toString() +
                          ') parameters instead!',
                      )
                    return e.apply(this, arguments)
                  }),
                  o = Object.create(e, { constructor: { value: n } }),
                  a = ((n.prototype = o), new Ie(p, n, o, h, i, d, c, f)),
                  e = new P(p, a, !0, !1, !1),
                  i = new P(p + '*', a, !1, !1, !1),
                  s = new P(p + ' const*', a, !1, !0, !1)
                return (
                  (Se[l] = { pointerType: i, constPointerType: s }),
                  (t = m),
                  (n = n),
                  g.hasOwnProperty(t) || Ee('Replacing nonexistant public symbol'),
                  g[t].overloadTable,
                  (g[t] = n),
                  (g[t].argCount = r),
                  [e, i, s]
                )
              })
          },
          l: function (e, n, t, r, o, a) {
            q(0 < n)
            var i = qe(n, t)
            ;(o = x(r, o)),
              ke([], [e], function (t) {
                var r = 'constructor ' + (t = t[0]).name
                if (
                  (void 0 === t.registeredClass.constructor_body &&
                    (t.registeredClass.constructor_body = []),
                  void 0 !== t.registeredClass.constructor_body[n - 1])
                )
                  throw new S(
                    'Cannot register multiple constructors with identical number of parameters (' +
                      (n - 1) +
                      ") for class '" +
                      t.name +
                      "'! Overload resolution is currently only performed using the parameter count, not actual type info!",
                  )
                return (
                  (t.registeredClass.constructor_body[n - 1] = () => {
                    He('Cannot construct ' + t.name + ' due to unbound types', i)
                  }),
                  ke([], i, function (e) {
                    return (
                      e.splice(1, 0, null),
                      (t.registeredClass.constructor_body[n - 1] = Ye(r, e, null, o, a)),
                      []
                    )
                  }),
                  []
                )
              })
          },
          f: function (e, a, i, t, r, s, l, u) {
            var d = qe(i, t)
            ;(a = B(a)),
              (s = x(r, s)),
              ke([], [e], function (t) {
                var r = (t = t[0]).name + '.' + a
                function e() {
                  He('Cannot call ' + r + ' due to unbound types', d)
                }
                a.startsWith('@@') && (a = Symbol[a.substring(2)]),
                  u && t.registeredClass.pureVirtualFunctions.push(a)
                var n = t.registeredClass.instancePrototype,
                  o = n[a]
                return (
                  void 0 === o ||
                  (void 0 === o.overloadTable && o.className !== t.name && o.argCount === i - 2)
                    ? ((e.argCount = i - 2), (e.className = t.name), (n[a] = e))
                    : (Re(n, a, r), (n[a].overloadTable[i - 2] = e)),
                  ke([], d, function (e) {
                    e = Ye(r, e, t, s, l)
                    return (
                      void 0 === n[a].overloadTable
                        ? ((e.argCount = i - 2), (n[a] = e))
                        : (n[a].overloadTable[i - 2] = e),
                      []
                    )
                  }),
                  []
                )
              })
          },
          D: function (e, t) {
            F(e, {
              name: (t = B(t)),
              fromWireType: function (e) {
                var t = Qe.toValue(e)
                return Ze(e), t
              },
              toWireType: function (e, t) {
                return Qe.toHandle(t)
              },
              argPackAdvance: 8,
              readValueFromPointer: Ge,
              destructorFunction: null,
            })
          },
          o: function (e, t, r) {
            r = me(r)
            F(e, {
              name: (t = B(t)),
              fromWireType: function (e) {
                return e
              },
              toWireType: function (e, t) {
                return t
              },
              argPackAdvance: 8,
              readValueFromPointer: (function (e, t) {
                switch (t) {
                  case 2:
                    return function (e) {
                      return this.fromWireType(Y[e >> 2])
                    }
                  case 3:
                    return function (e) {
                      return this.fromWireType(J[e >> 3])
                    }
                  default:
                    throw new TypeError('Unknown float type: ' + e)
                }
              })(t, r),
              destructorFunction: null,
            })
          },
          c: function (e, t, r, n, o) {
            t = B(t)
            var a,
              i = me(r),
              s = e => e,
              r = (0 === n && ((a = 32 - 8 * r), (s = e => (e << a) >>> a)), t.includes('unsigned'))
            F(e, {
              name: t,
              fromWireType: s,
              toWireType: r
                ? function (e, t) {
                    return this.name, t >>> 0
                  }
                : function (e, t) {
                    return this.name, t
                  },
              argPackAdvance: 8,
              readValueFromPointer: (function (e, t, r) {
                switch (t) {
                  case 0:
                    return r
                      ? function (e) {
                          return c[e]
                        }
                      : function (e) {
                          return f[e]
                        }
                  case 1:
                    return r
                      ? function (e) {
                          return l[e >> 1]
                        }
                      : function (e) {
                          return K[e >> 1]
                        }
                  case 2:
                    return r
                      ? function (e) {
                          return u[e >> 2]
                        }
                      : function (e) {
                          return p[e >> 2]
                        }
                  default:
                    throw new TypeError('Unknown integer type: ' + e)
                }
              })(t, i, 0 !== n),
              destructorFunction: null,
            })
          },
          b: function (e, t, r) {
            var n = [
              Int8Array,
              Uint8Array,
              Int16Array,
              Uint16Array,
              Int32Array,
              Uint32Array,
              Float32Array,
              Float64Array,
            ][t]
            function o(e) {
              var t = p,
                r = t[(e >>= 2)],
                t = t[e + 1]
              return new n(X, t, r)
            }
            F(
              e,
              { name: (r = B(r)), fromWireType: o, argPackAdvance: 8, readValueFromPointer: o },
              { ignoreDuplicateRegistrations: !0 },
            )
          },
          p: function (e, t) {
            var u = 'std::string' === (t = B(t))
            F(e, {
              name: t,
              fromWireType: function (e) {
                var t,
                  r = p[e >> 2],
                  n = e + 4
                if (u)
                  for (var o = n, a = 0; a <= r; ++a) {
                    var i,
                      s = n + a
                    ;(a != r && 0 != f[s]) ||
                      ((i = ee(o, s - o)),
                      void 0 === t ? (t = i) : (t = t + String.fromCharCode(0) + i),
                      (o = s + 1))
                  }
                else {
                  for (var l = new Array(r), a = 0; a < r; ++a) l[a] = String.fromCharCode(f[n + a])
                  t = l.join('')
                }
                return R(e), t
              },
              toWireType: function (e, t) {
                var r,
                  n = 'string' == typeof (t = t instanceof ArrayBuffer ? new Uint8Array(t) : t),
                  o =
                    (n ||
                      t instanceof Uint8Array ||
                      t instanceof Uint8ClampedArray ||
                      t instanceof Int8Array ||
                      C('Cannot pass non-string to std::string'),
                    (r = u && n ? re(t) : t.length),
                    yt(4 + r + 1)),
                  a = o + 4
                if (((p[o >> 2] = r), u && n)) te(t, f, a, r + 1)
                else if (n)
                  for (var i = 0; i < r; ++i) {
                    var s = t.charCodeAt(i)
                    255 < s && (R(a), C('String has UTF-16 code units that do not fit in 8 bits')),
                      (f[a + i] = s)
                  }
                else for (i = 0; i < r; ++i) f[a + i] = t[i]
                return null !== e && e.push(R, o), o
              },
              argPackAdvance: 8,
              readValueFromPointer: Ge,
              destructorFunction: function (e) {
                R(e)
              },
            })
          },
          k: function (e, l, o) {
            var u, a, d, i, c
            ;(o = B(o)),
              2 === l
                ? ((u = rt), (a = nt), (i = ot), (d = () => K), (c = 1))
                : 4 === l && ((u = at), (a = it), (i = st), (d = () => p), (c = 2)),
              F(e, {
                name: o,
                fromWireType: function (e) {
                  for (var t, r = p[e >> 2], n = d(), o = e + 4, a = 0; a <= r; ++a) {
                    var i,
                      s = e + 4 + a * l
                    ;(a != r && 0 != n[s >> c]) ||
                      ((i = u(o, s - o)),
                      void 0 === t ? (t = i) : (t = t + String.fromCharCode(0) + i),
                      (o = s + l))
                  }
                  return R(e), t
                },
                toWireType: function (e, t) {
                  'string' != typeof t && C('Cannot pass non-string to C++ string type ' + o)
                  var r = i(t),
                    n = yt(4 + r + l)
                  return (p[n >> 2] = r >> c), a(t, n + 4, r + l), null !== e && e.push(R, n), n
                },
                argPackAdvance: 8,
                readValueFromPointer: Ge,
                destructorFunction: function (e) {
                  R(e)
                },
              })
          },
          q: function (e, t) {
            F(e, {
              isVoid: !0,
              name: (t = B(t)),
              argPackAdvance: 0,
              fromWireType: function () {},
              toWireType: function (e, t) {},
            })
          },
          j: function () {
            return Date.now()
          },
          e: function (e, t, r, n) {
            ;(e = ut[e])(
              (t = Qe.toValue(t)),
              (r = void 0 === (t = lt[(e = r)]) ? B(e) : t),
              null,
              n,
            )
          },
          g: Ze,
          d: function (e, t) {
            var r = (function (e, t) {
                for (var r, n, o = new Array(e), a = 0; a < e; ++a)
                  o[a] =
                    ((r = p[(t + 4 * a) >> 2]),
                    void 0 === (n = D[r]) && C('parameter ' + a + ' has unknown type ' + We(r)),
                    n)
                return o
              })(e, t),
              t = r[0],
              n =
                t.name +
                '_$' +
                r
                  .slice(1)
                  .map(function (e) {
                    return e.name
                  })
                  .join('_') +
                '$',
              o = dt[n]
            if (void 0 !== o) return o
            for (var a = ['retType'], i = [t], s = '', l = 0; l < e - 1; ++l)
              (s += (0 !== l ? ', ' : '') + 'arg' + l), a.push('argType' + l), i.push(r[1 + l])
            for (
              var u =
                  'return function ' +
                  _e('methodCaller_' + n) +
                  '(handle, name, destructors, args) {\n',
                d = 0,
                l = 0;
              l < e - 1;
              ++l
            )
              (u +=
                '    var arg' +
                l +
                ' = argType' +
                l +
                '.readValueFromPointer(args' +
                (d ? '+' + d : '') +
                ');\n'),
                (d += r[l + 1].argPackAdvance)
            for (u += '    var rv = handle[name](' + s + ');\n', l = 0; l < e - 1; ++l)
              r[l + 1].deleteObject && (u += '    argType' + l + '.deleteObject(arg' + l + ');\n')
            t.isVoid || (u += '    return retType.toWireType(destructors, rv);\n'),
              a.push((u += '};\n'))
            var t = Ke(Function, a).apply(null, i),
              c = ut.length
            return ut.push(t), (dt[n] = o = c)
          },
          a: function () {
            w('')
          },
          z: function (e, t, r) {
            f.copyWithin(e, t, t + r)
          },
          i: function (e) {
            f.length, w('OOM')
          },
          x: function (i, s) {
            var l = 0
            return (
              ft().forEach(function (e, t) {
                for (
                  var r = s + l, n = ((p[(i + 4 * t) >> 2] = r), e), o = r, a = 0;
                  a < n.length;
                  ++a
                )
                  c[o++ >> 0] = n.charCodeAt(a)
                ;(c[o >> 0] = 0), (l += e.length + 1)
              }),
              0
            )
          },
          y: function (e, t) {
            var r = ft(),
              n = ((p[e >> 2] = r.length), 0)
            return (
              r.forEach(function (e) {
                n += e.length + 1
              }),
              (p[t >> 2] = n),
              0
            )
          },
          n: function (e) {
            try {
              var t = T.getStreamFromFD(e)
              return k.close(t), 0
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
              throw e
            }
          },
          w: function (e, t) {
            try {
              var r = T.getStreamFromFD(e),
                n = r.tty ? 2 : k.isDir(r.mode) ? 3 : k.isLink(r.mode) ? 7 : 4
              return (c[t >> 0] = n), 0
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
              throw e
            }
          },
          B: function (e, t, r, n) {
            try {
              var o = (function (e, t, r) {
                for (var n = 0, o = 0; o < r; o++) {
                  var a = p[t >> 2],
                    i = p[(t + 4) >> 2],
                    a = ((t += 8), k.read(e, c, a, i, void 0))
                  if (a < 0) return -1
                  if (((n += a), a < i)) break
                }
                return n
              })(T.getStreamFromFD(e), t, r)
              return (u[n >> 2] = o), 0
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
              throw e
            }
          },
          t: function (e, t, r, n, o) {
            try {
              var a = (r + 2097152) >>> 0 < 4194305 - !!t ? (t >>> 0) + 4294967296 * r : NaN
              if (isNaN(a)) return 61
              var i = T.getStreamFromFD(e)
              return (
                k.llseek(i, a, n),
                (_ = [
                  i.position >>> 0,
                  ((y = i.position),
                  1 <= +Math.abs(y)
                    ? 0 < y
                      ? (0 | Math.min(+Math.floor(y / 4294967296), 4294967295)) >>> 0
                      : ~~+Math.ceil((y - (~~y >>> 0)) / 4294967296) >>> 0
                    : 0),
                ]),
                (u[o >> 2] = _[0]),
                (u[(o + 4) >> 2] = _[1]),
                i.getdents && 0 === a && 0 === n && (i.getdents = null),
                0
              )
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
              throw e
            }
          },
          A: function (e, t, r, n) {
            try {
              var o = (function (e, t, r) {
                for (var n = 0, o = 0; o < r; o++) {
                  var a = p[t >> 2],
                    i = p[(t + 4) >> 2],
                    a = ((t += 8), k.write(e, c, a, i, void 0))
                  if (a < 0) return -1
                  n += a
                }
                return n
              })(T.getStreamFromFD(e), t, r)
              return (p[n >> 2] = o), 0
            } catch (e) {
              if (void 0 !== k && e instanceof k.ErrnoError) return e.errno
              throw e
            }
          },
          h: function (e) {},
        },
        R =
          (!(function () {
            var t = { a: gt }
            function r(e, t) {
              var e = e.exports
              ;(g.asm = e),
                (e = g.asm.F.buffer),
                (X = e),
                (g.HEAP8 = c = new Int8Array(e)),
                (g.HEAP16 = l = new Int16Array(e)),
                (g.HEAP32 = u = new Int32Array(e)),
                (g.HEAPU8 = f = new Uint8Array(e)),
                (g.HEAPU16 = K = new Uint16Array(e)),
                (g.HEAPU32 = p = new Uint32Array(e)),
                (g.HEAPF32 = Y = new Float32Array(e)),
                (g.HEAPF64 = J = new Float64Array(e)),
                (Z = g.asm.J),
                (e = g.asm.G),
                oe.unshift(e),
                se()
            }
            function n(e) {
              r(e.instance)
            }
            function o(e) {
              return (function () {
                if (!a && (z || d)) {
                  if ('function' == typeof fetch && !ue(h))
                    return fetch(h, { credentials: 'same-origin' })
                      .then(function (e) {
                        if (e.ok) return e.arrayBuffer()
                        throw "failed to load wasm binary file at '" + h + "'"
                      })
                      .catch(function () {
                        return de(h)
                      })
                  if (m)
                    return new Promise(function (t, e) {
                      m(
                        h,
                        function (e) {
                          t(new Uint8Array(e))
                        },
                        e,
                      )
                    })
                }
                return Promise.resolve().then(function () {
                  return de(h)
                })
              })()
                .then(function (e) {
                  return WebAssembly.instantiate(e, t)
                })
                .then(function (e) {
                  return e
                })
                .then(e, function (e) {
                  s('failed to asynchronously prepare wasm: ' + e), w(e)
                })
            }
            if ((ie(), g.instantiateWasm))
              try {
                return g.instantiateWasm(t, r)
              } catch (t) {
                return s('Module.instantiateWasm callback failed with error: ' + t)
              }
            a ||
            'function' != typeof WebAssembly.instantiateStreaming ||
            le(h) ||
            ue(h) ||
            j ||
            'function' != typeof fetch
              ? o(n)
              : fetch(h, { credentials: 'same-origin' }).then(function (e) {
                  return WebAssembly.instantiateStreaming(e, t).then(n, function (e) {
                    return (
                      s('wasm streaming compile failed: ' + e),
                      s('falling back to ArrayBuffer instantiation'),
                      o(n)
                    )
                  })
                })
          })(),
          (g.___wasm_call_ctors = function () {
            return (g.___wasm_call_ctors = g.asm.G).apply(null, arguments)
          }),
          (g._free = function () {
            return (R = g._free = g.asm.H).apply(null, arguments)
          })),
        yt = (g._malloc = function () {
          return (yt = g._malloc = g.asm.I).apply(null, arguments)
        }),
        _t = (g.___errno_location = function () {
          return (_t = g.___errno_location = g.asm.K).apply(null, arguments)
        }),
        wt = (g.___getTypeName = function () {
          return (wt = g.___getTypeName = g.asm.L).apply(null, arguments)
        })
      g.___embind_register_native_and_builtin_types = function () {
        return (g.___embind_register_native_and_builtin_types = g.asm.M).apply(null, arguments)
      }
      var vt,
        bt = (g._emscripten_builtin_memalign = function () {
          return (bt = g._emscripten_builtin_memalign = g.asm.N).apply(null, arguments)
        }),
        Et = (g.___cxa_is_pointer_type = function () {
          return (Et = g.___cxa_is_pointer_type = g.asm.O).apply(null, arguments)
        })
      function kt() {
        function e() {
          if (!vt && ((vt = !0), (g.calledRun = !0), !H)) {
            if (
              (g.noFSInit || k.init.initialized || k.init(),
              (k.ignorePermissions = !1),
              ce(oe),
              g.onRuntimeInitialized && g.onRuntimeInitialized(),
              g.postRun)
            )
              for ('function' == typeof g.postRun && (g.postRun = [g.postRun]); g.postRun.length; )
                (e = g.postRun.shift()), ae.unshift(e)
            var e
            ce(ae)
          }
        }
        if (!(0 < r)) {
          if (g.preRun)
            for ('function' == typeof g.preRun && (g.preRun = [g.preRun]); g.preRun.length; )
              (t = g.preRun.shift()), ne.unshift(t)
          var t
          ce(ne),
            0 < r ||
              (g.setStatus
                ? (g.setStatus('Running...'),
                  setTimeout(function () {
                    setTimeout(function () {
                      g.setStatus('')
                    }, 1),
                      e()
                  }, 1))
                : e())
        }
      }
      if (
        ((g.dynCall_viiijj = function () {
          return (g.dynCall_viiijj = g.asm.P).apply(null, arguments)
        }),
        (g.dynCall_jij = function () {
          return (g.dynCall_jij = g.asm.Q).apply(null, arguments)
        }),
        (g.dynCall_jii = function () {
          return (g.dynCall_jii = g.asm.R).apply(null, arguments)
        }),
        (g.dynCall_jiji = function () {
          return (g.dynCall_jiji = g.asm.S).apply(null, arguments)
        }),
        (g._ff_h264_cabac_tables = 215452),
        (n = function e() {
          vt || kt(), vt || (n = e)
        }),
        g.preInit)
      )
        for ('function' == typeof g.preInit && (g.preInit = [g.preInit]); 0 < g.preInit.length; )
          g.preInit.pop()()
      kt(), (I.exports = g)
    }),
    k = 1e-6,
    o = 'undefined' != typeof Float32Array ? Float32Array : Array
  function T() {
    var e = new o(16)
    return (
      o != Float32Array &&
        ((e[1] = 0),
        (e[2] = 0),
        (e[3] = 0),
        (e[4] = 0),
        (e[6] = 0),
        (e[7] = 0),
        (e[8] = 0),
        (e[9] = 0),
        (e[11] = 0),
        (e[12] = 0),
        (e[13] = 0),
        (e[14] = 0)),
      (e[0] = 1),
      (e[5] = 1),
      (e[10] = 1),
      (e[15] = 1),
      e
    )
  }
  function A(e) {
    ;(e[0] = 1),
      (e[1] = 0),
      (e[2] = 0),
      (e[3] = 0),
      (e[4] = 0),
      (e[5] = 1),
      (e[6] = 0),
      (e[7] = 0),
      (e[8] = 0),
      (e[9] = 0),
      (e[10] = 1),
      (e[11] = 0),
      (e[12] = 0),
      (e[13] = 0),
      (e[14] = 0),
      (e[15] = 1)
  }
  Math.hypot ||
    (Math.hypot = function () {
      for (var e = 0, t = arguments.length; t--; ) e += arguments[t] * arguments[t]
      return Math.sqrt(e)
    })
  var D = function (e, t, r, n, o, a, i) {
    var s = 1 / (t - r),
      l = 1 / (n - o),
      u = 1 / (a - i)
    return (
      (e[0] = -2 * s),
      (e[1] = 0),
      (e[2] = 0),
      (e[3] = 0),
      (e[4] = 0),
      (e[5] = -2 * l),
      (e[6] = 0),
      (e[7] = 0),
      (e[8] = 0),
      (e[9] = 0),
      (e[10] = 2 * u),
      (e[11] = 0),
      (e[12] = (t + r) * s),
      (e[13] = (o + n) * l),
      (e[14] = (i + a) * u),
      (e[15] = 1),
      e
    )
  }
  function B(e, t, r) {
    var n = new o(3)
    return (n[0] = e), (n[1] = t), (n[2] = r), n
  }
  ;(e = new o(3)), o != Float32Array && ((e[0] = 0), (e[1] = 0), (e[2] = 0))
  var J = (y, e) => {
    e && y.pixelStorei(y.UNPACK_ALIGNMENT, 1)
    ;(e = a(
      y.VERTEX_SHADER,
      '\n            attribute vec4 aVertexPosition;\n            attribute vec2 aTexturePosition;\n            uniform mat4 uModelMatrix;\n            uniform mat4 uViewMatrix;\n            uniform mat4 uProjectionMatrix;\n            varying lowp vec2 vTexturePosition;\n            void main(void) {\n              gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n              vTexturePosition = aTexturePosition;\n            }\n        ',
    )),
      (t = a(
        y.FRAGMENT_SHADER,
        '\n            precision highp float;\n            varying highp vec2 vTexturePosition;\n            uniform int isyuv;\n            uniform sampler2D rgbaTexture;\n            uniform sampler2D yTexture;\n            uniform sampler2D uTexture;\n            uniform sampler2D vTexture;\n\n            const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n                                       1.1643828125, -.39176171875, -.81296875, .52959375,\n                                       1.1643828125, 2.017234375, 0, -1.081390625,\n                                       0, 0, 0, 1);\n\n\n            void main(void) {\n\n                if (isyuv>0) {\n\n                    highp float y = texture2D(yTexture,  vTexturePosition).r;\n                    highp float u = texture2D(uTexture,  vTexturePosition).r;\n                    highp float v = texture2D(vTexture,  vTexturePosition).r;\n                    gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n                } else {\n                    gl_FragColor =  texture2D(rgbaTexture, vTexturePosition);\n                }\n            }\n        ',
      )),
      (r = y.createProgram()),
      y.attachShader(r, e),
      y.attachShader(r, t),
      y.linkProgram(r)
    var t,
      r,
      e = y.getProgramParameter(r, y.LINK_STATUS)
        ? r
        : (console.log('Unable to initialize the shader program: ' + y.getProgramInfoLog(r)), null)
    let _ = {
        program: e,
        attribLocations: {
          vertexPosition: y.getAttribLocation(e, 'aVertexPosition'),
          texturePosition: y.getAttribLocation(e, 'aTexturePosition'),
        },
        uniformLocations: {
          projectionMatrix: y.getUniformLocation(e, 'uProjectionMatrix'),
          modelMatrix: y.getUniformLocation(e, 'uModelMatrix'),
          viewMatrix: y.getUniformLocation(e, 'uViewMatrix'),
          rgbatexture: y.getUniformLocation(e, 'rgbaTexture'),
          ytexture: y.getUniformLocation(e, 'yTexture'),
          utexture: y.getUniformLocation(e, 'uTexture'),
          vtexture: y.getUniformLocation(e, 'vTexture'),
          isyuv: y.getUniformLocation(e, 'isyuv'),
        },
      },
      w =
        ((t = y.createBuffer()),
        y.bindBuffer(y.ARRAY_BUFFER, t),
        y.bufferData(
          y.ARRAY_BUFFER,
          new Float32Array([-1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1]),
          y.STATIC_DRAW,
        ),
        (r = (r = []).concat([0, 1], [1, 1], [1, 0], [0, 0])),
        (e = y.createBuffer()),
        y.bindBuffer(y.ARRAY_BUFFER, e),
        y.bufferData(y.ARRAY_BUFFER, new Float32Array(r), y.STATIC_DRAW),
        (r = y.createBuffer()),
        y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, r),
        y.bufferData(y.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 0, 2, 3]), y.STATIC_DRAW),
        { position: t, texPosition: e, indices: r }),
      n = o(),
      v = o(),
      b = o(),
      E = o()
    function o() {
      var e = y.createTexture()
      return (
        y.bindTexture(y.TEXTURE_2D, e),
        y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MAG_FILTER, y.LINEAR),
        y.texParameteri(y.TEXTURE_2D, y.TEXTURE_MIN_FILTER, y.LINEAR),
        y.texParameteri(y.TEXTURE_2D, y.TEXTURE_WRAP_S, y.CLAMP_TO_EDGE),
        y.texParameteri(y.TEXTURE_2D, y.TEXTURE_WRAP_T, y.CLAMP_TO_EDGE),
        e
      )
    }
    function a(e, t) {
      e = y.createShader(e)
      return (
        y.shaderSource(e, t),
        y.compileShader(e),
        y.getShaderParameter(e, y.COMPILE_STATUS)
          ? e
          : (console.log('An error occurred compiling the shaders: ' + y.getShaderInfoLog(e)),
            y.deleteShader(e),
            null)
      )
    }
    function i(e, t) {
      y.viewport(0, 0, e, t),
        y.clearColor(0, 0, 0, 0),
        y.clearDepth(1),
        y.enable(y.DEPTH_TEST),
        y.depthFunc(y.LEQUAL),
        y.clear(y.COLOR_BUFFER_BIT | y.DEPTH_BUFFER_BIT)
      const r = T()
      D(r, -1, 1, -1, 1, 0.1, 100)
      var n,
        o,
        a,
        i,
        s,
        l,
        u,
        d,
        c,
        f,
        p,
        h,
        m,
        g,
        e = T(),
        t = (A(e), T())
      ;(n = t),
        (o = B(0, 0, 0)),
        (a = B(0, 0, -1)),
        (i = B(0, 1, 0)),
        (c = o[0]),
        (f = o[1]),
        (o = o[2]),
        (p = i[0]),
        (h = i[1]),
        (i = i[2]),
        (m = a[0]),
        (g = a[1]),
        (a = a[2]),
        Math.abs(c - m) < k && Math.abs(f - g) < k && Math.abs(o - a) < k
          ? A(n)
          : ((a = o - a),
            (s = h * (a *= d = 1 / Math.hypot((m = c - m), (g = f - g), a)) - i * (g *= d)),
            (i = i * (m *= d) - p * a),
            (p = p * g - h * m),
            (d = Math.hypot(s, i, p)) ? ((s *= d = 1 / d), (i *= d), (p *= d)) : (p = i = s = 0),
            (h = g * p - a * i),
            (l = a * s - m * p),
            (u = m * i - g * s),
            (d = Math.hypot(h, l, u)) ? ((h *= d = 1 / d), (l *= d), (u *= d)) : (u = l = h = 0),
            (n[0] = s),
            (n[1] = h),
            (n[2] = m),
            (n[3] = 0),
            (n[4] = i),
            (n[5] = l),
            (n[6] = g),
            (n[7] = 0),
            (n[8] = p),
            (n[9] = u),
            (n[10] = a),
            (n[11] = 0),
            (n[12] = -(s * c + i * f + p * o)),
            (n[13] = -(h * c + l * f + u * o)),
            (n[14] = -(m * c + g * f + a * o)),
            (n[15] = 1))
      {
        const e = 3,
          t = y.FLOAT,
          r = !1,
          v = 0,
          b = 0
        y.bindBuffer(y.ARRAY_BUFFER, w.position),
          y.vertexAttribPointer(_.attribLocations.vertexPosition, 3, t, !1, 0, 0),
          y.enableVertexAttribArray(_.attribLocations.vertexPosition)
      }
      {
        const e = 2,
          t = y.FLOAT,
          r = !1,
          v = 0,
          b = 0
        y.bindBuffer(y.ARRAY_BUFFER, w.texPosition),
          y.vertexAttribPointer(_.attribLocations.texturePosition, 2, t, !1, 0, 0),
          y.enableVertexAttribArray(_.attribLocations.texturePosition)
      }
      y.activeTexture(y.TEXTURE0 + 3),
        y.bindTexture(y.TEXTURE_2D, v),
        y.activeTexture(y.TEXTURE0 + 4),
        y.bindTexture(y.TEXTURE_2D, b),
        y.activeTexture(y.TEXTURE0 + 5),
        y.bindTexture(y.TEXTURE_2D, E),
        y.bindBuffer(y.ELEMENT_ARRAY_BUFFER, w.indices),
        y.useProgram(_.program),
        y.uniformMatrix4fv(_.uniformLocations.projectionMatrix, !1, r),
        y.uniformMatrix4fv(_.uniformLocations.modelMatrix, !1, e),
        y.uniformMatrix4fv(_.uniformLocations.viewMatrix, !1, t),
        y.uniform1i(_.uniformLocations.rgbatexture, 2),
        y.uniform1i(_.uniformLocations.ytexture, 3),
        y.uniform1i(_.uniformLocations.utexture, 4),
        y.uniform1i(_.uniformLocations.vtexture, 5),
        y.uniform1i(_.uniformLocations.isyuv, 1)
      {
        const e = 6,
          t = y.UNSIGNED_SHORT,
          _ = 0
        y.drawElements(y.TRIANGLES, 6, t, 0)
      }
    }
    return {
      render: function (e, t, r, n, o) {
        y.activeTexture(y.TEXTURE0),
          y.bindTexture(y.TEXTURE_2D, v),
          y.texImage2D(y.TEXTURE_2D, 0, y.LUMINANCE, e, t, 0, y.LUMINANCE, y.UNSIGNED_BYTE, r),
          y.activeTexture(y.TEXTURE1),
          y.bindTexture(y.TEXTURE_2D, b),
          y.texImage2D(
            y.TEXTURE_2D,
            0,
            y.LUMINANCE,
            e / 2,
            t / 2,
            0,
            y.LUMINANCE,
            y.UNSIGNED_BYTE,
            n,
          ),
          y.activeTexture(y.TEXTURE2),
          y.bindTexture(y.TEXTURE_2D, E),
          y.texImage2D(
            y.TEXTURE_2D,
            0,
            y.LUMINANCE,
            e / 2,
            t / 2,
            0,
            y.LUMINANCE,
            y.UNSIGNED_BYTE,
            o,
          ),
          i(e, t)
      },
      renderYUV: function (e, t, r) {
        var n = r.slice(0, e * t),
          o = r.slice(e * t, (e * t * 5) / 4),
          r = r.slice((e * t * 5) / 4, (e * t * 3) / 2)
        y.activeTexture(y.TEXTURE0),
          y.bindTexture(y.TEXTURE_2D, v),
          y.texImage2D(y.TEXTURE_2D, 0, y.LUMINANCE, e, t, 0, y.LUMINANCE, y.UNSIGNED_BYTE, n),
          y.activeTexture(y.TEXTURE1),
          y.bindTexture(y.TEXTURE_2D, b),
          y.texImage2D(
            y.TEXTURE_2D,
            0,
            y.LUMINANCE,
            e / 2,
            t / 2,
            0,
            y.LUMINANCE,
            y.UNSIGNED_BYTE,
            o,
          ),
          y.activeTexture(y.TEXTURE2),
          y.bindTexture(y.TEXTURE_2D, E),
          y.texImage2D(
            y.TEXTURE_2D,
            0,
            y.LUMINANCE,
            e / 2,
            t / 2,
            0,
            y.LUMINANCE,
            y.UNSIGNED_BYTE,
            r,
          ),
          i(e, t)
      },
      destroy: function () {
        y.deleteProgram(_.program),
          y.deleteBuffer(w.position),
          y.deleteBuffer(w.texPosition),
          y.deleteBuffer(w.indices),
          y.deleteTexture(n),
          y.deleteTexture(v),
          y.deleteTexture(b),
          y.deleteTexture(E),
          (_ = null),
          (w = null),
          (n = null),
          (v = null),
          (b = null),
          (E = null)
      },
    }
  }
  const Z = 'fetch',
    x = 'player',
    L = 'mp4',
    w = 'debug',
    v = 'warn',
    Q = {
      playType: x,
      container: '',
      videoBuffer: 1e3,
      videoBufferDelay: 1e3,
      networkDelay: 1e4,
      isResize: !0,
      isFullResize: !1,
      isFlv: !1,
      isHls: !1,
      isWebrtc: !1,
      isWebrtcForZLM: !1,
      isNakedFlow: !1,
      debug: !1,
      debugLevel: v,
      debugUuid: '',
      isMulti: !1,
      hotKey: !1,
      loadingTimeout: 10,
      heartTimeout: 10,
      timeout: 10,
      pageVisibilityHiddenTimeout: 300,
      loadingTimeoutReplay: !0,
      heartTimeoutReplay: !0,
      loadingTimeoutReplayTimes: 3,
      heartTimeoutReplayTimes: 3,
      heartTimeoutReplayUseLastFrameShow: !1,
      replayUseLastFrameShow: !1,
      supportDblclickFullscreen: !1,
      showBandwidth: !1,
      showPerformance: !1,
      mseCorrectTimeDuration: 20,
      keepScreenOn: !0,
      isNotMute: !1,
      hasAudio: !0,
      hasVideo: !0,
      operateBtns: {
        fullscreen: !1,
        screenshot: !1,
        play: !1,
        audio: !1,
        record: !1,
        ptz: !1,
        quality: !1,
        zoom: !1,
        close: !1,
        scale: !1,
        performance: !1,
        aiFace: !1,
        aiObject: !1,
        fullscreenFn: null,
        fullscreenExitFn: null,
        screenshotFn: null,
        playFn: null,
        pauseFn: null,
        recordFn: null,
        recordStopFn: null,
      },
      extendOperateBtns: [],
      contextmenuBtns: [],
      watermarkConfig: {},
      controlAutoHide: !1,
      hasControl: !1,
      loadingIcon: !0,
      loadingText: '',
      background: '',
      backgroundLoadingShow: !1,
      loadingBackground: '',
      decoder: 'decoder-pro.js',
      decoderAudio: 'decoder-pro-audio.js',
      decoderWASM: '',
      isDecoderUseCDN: !1,
      url: '',
      rotate: 0,
      mirrorRotate: 'none',
      playbackConfig: {
        playList: [],
        fps: '',
        showControl: !0,
        showRateBtn: !1,
        rateConfig: [],
        isCacheBeforeDecodeForFpsRender: !1,
        uiUsePlaybackPause: !1,
        isPlaybackPauseClearCache: !0,
        isUseFpsRender: !1,
        isUseLocalCalculateTime: !1,
        localOneFrameTimestamp: 40,
        supportWheel: !1,
      },
      qualityConfig: [],
      defaultStreamQuality: '',
      scaleConfig: ['拉伸', '缩放', '正常'],
      forceNoOffscreen: !0,
      hiddenAutoPause: !1,
      protocol: 2,
      demuxType: 'flv',
      useWasm: !1,
      useWCS: !1,
      useSIMD: !0,
      wcsUseVideoRender: !0,
      wasmUseVideoRender: !0,
      mseUseCanvasRender: !1,
      hlsUseCanvasRender: !1,
      useMSE: !1,
      useOffscreen: !1,
      useWebGPU: !1,
      mseDecodeErrorReplay: !0,
      wcsDecodeErrorReplay: !0,
      wasmDecodeErrorReplay: !0,
      autoWasm: !0,
      webglAlignmentErrorReplay: !0,
      webglContextLostErrorReplay: !0,
      openWebglAlignment: !1,
      syncAudioAndVideo: !1,
      playbackDelayTime: 1e3,
      playbackFps: 25,
      playbackForwardMaxRateDecodeIFrame: 4,
      playbackCurrentTimeMove: !0,
      useVideoRender: !0,
      useCanvasRender: !1,
      networkDelayTimeoutReplay: !1,
      recordType: L,
      checkFirstIFrame: !0,
      nakedFlowFps: 25,
      audioEngine: null,
      isShowRecordingUI: !0,
      isShowZoomingUI: !0,
      useFaceDetector: !1,
      useObjectDetector: !1,
      ptzClickType: 'click',
      ptzStopEmitDelay: 0.3,
      ptzZoomShow: !1,
      ptzApertureShow: !1,
      ptzFocusShow: !1,
      ptzMoreArrow: !1,
      weiXinInAndroidAudioBufferSize: 4800,
      isCrypto: !1,
      cryptoKey: '',
      cryptoIV: '',
      cryptoKeyUrl: '',
      autoResize: !1,
      useWebFullScreen: !1,
      ptsMaxDiff: 3600,
      aiFaceDetectWidth: 192,
      aiObjectDetectWidth: 192,
      videoRenderSupportScale: !0,
      mediaSourceTsIsMaxDiffReplay: !0,
      controlHtml: '',
      isH265: !1,
      supportLockScreenPlayAudio: !0,
      supportHls265: !1,
    },
    ee = 'initVideo',
    R = 'render',
    te = 'playAudio',
    re = 'videoCode',
    ne = 'videoCodec',
    I = 'workerFetch',
    oe = 'workerEnd',
    M = 'streamEnd',
    ae = 'streamSuccess',
    $ = 'fetchError',
    ie = 'H264(AVC)',
    se = 'H265(HEVC)',
    N = 10,
    O = 7,
    G = 8,
    b = 5,
    E = 6,
    V = 32,
    z = 33,
    j = 34,
    W = 'AbortError',
    le = 0
  function ue(e) {
    return e[0] >> 4 === N && e[1] === le
  }
  function de() {
    return new Date().getTime()
  }
  function ce() {
    return (performance && 'function' == typeof performance.now ? performance : Date).now()
  }
  y(function (e) {
    var i, t, s, r, n
    ;(i = 'undefined' != typeof window && void 0 !== window.document ? window.document : {}),
      (t = e.exports),
      (s = (function () {
        for (
          var e,
            t = [
              [
                'requestFullscreen',
                'exitFullscreen',
                'fullscreenElement',
                'fullscreenEnabled',
                'fullscreenchange',
                'fullscreenerror',
              ],
              [
                'webkitRequestFullscreen',
                'webkitExitFullscreen',
                'webkitFullscreenElement',
                'webkitFullscreenEnabled',
                'webkitfullscreenchange',
                'webkitfullscreenerror',
              ],
              [
                'webkitRequestFullScreen',
                'webkitCancelFullScreen',
                'webkitCurrentFullScreenElement',
                'webkitCancelFullScreen',
                'webkitfullscreenchange',
                'webkitfullscreenerror',
              ],
              [
                'mozRequestFullScreen',
                'mozCancelFullScreen',
                'mozFullScreenElement',
                'mozFullScreenEnabled',
                'mozfullscreenchange',
                'mozfullscreenerror',
              ],
              [
                'msRequestFullscreen',
                'msExitFullscreen',
                'msFullscreenElement',
                'msFullscreenEnabled',
                'MSFullscreenChange',
                'MSFullscreenError',
              ],
            ],
            r = 0,
            n = t.length,
            o = {};
          r < n;
          r++
        )
          if ((e = t[r]) && e[1] in i) {
            for (r = 0; r < e.length; r++) o[t[0][r]] = e[r]
            return o
          }
        return !1
      })()),
      (r = { change: s.fullscreenchange, error: s.fullscreenerror }),
      (n = {
        request: function (o, a) {
          return new Promise(
            function (e, t) {
              var r = function () {
                  this.off('change', r), e()
                }.bind(this),
                n = (this.on('change', r), (o = o || i.documentElement)[s.requestFullscreen](a))
              n instanceof Promise && n.then(r).catch(t)
            }.bind(this),
          )
        },
        exit: function () {
          return new Promise(
            function (e, t) {
              var r, n
              this.isFullscreen
                ? ((r = function () {
                    this.off('change', r), e()
                  }.bind(this)),
                  this.on('change', r),
                  (n = i[s.exitFullscreen]()) instanceof Promise && n.then(r).catch(t))
                : e()
            }.bind(this),
          )
        },
        toggle: function (e, t) {
          return this.isFullscreen ? this.exit() : this.request(e, t)
        },
        onchange: function (e) {
          this.on('change', e)
        },
        onerror: function (e) {
          this.on('error', e)
        },
        on: function (e, t) {
          e = r[e]
          e && i.addEventListener(e, t, !1)
        },
        off: function (e, t) {
          e = r[e]
          e && i.removeEventListener(e, t, !1)
        },
        raw: s,
      }),
      s
        ? (Object.defineProperties(n, {
            isFullscreen: {
              get: function () {
                return Boolean(i[s.fullscreenElement])
              },
            },
            element: {
              enumerable: !0,
              get: function () {
                return i[s.fullscreenElement]
              },
            },
            isEnabled: {
              enumerable: !0,
              get: function () {
                return Boolean(i[s.fullscreenEnabled])
              },
            },
          }),
          t ? (e.exports = n) : (window.screenfull = n))
        : t
        ? (e.exports = { isEnabled: !1 })
        : (window.screenfull = { isEnabled: !1 })
  }).isEnabled
  try {
    if ('object' == typeof WebAssembly && 'function' == typeof WebAssembly.instantiate) {
      var S = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0))
      if (S instanceof WebAssembly.Module) new WebAssembly.Instance(S), WebAssembly.Instance
    }
  } catch (e) {}
  function H(e) {
    return null == e
  }
  function fe(r, n) {
    let o = (r = n ? r.filter(e => e.type === n) : r)[0],
      a = null,
      e = 1
    var t
    if ((0 < r.length && (t = r[1]) && 1e5 < t.ts - o.ts && ((o = t), (e = 2)), o))
      for (let t = e; t < r.length; t++) {
        let e = r[t]
        !(e = n && e.type !== n ? null : e) ||
          (1e3 <= e.ts - o.ts && r[t - 1].ts - o.ts < 1e3 && (a = t + 1))
      }
    return a
  }
  function pe(e) {
    return !0 === e || 'true' === e
  }
  const C = [
      [Uint8Array, Int8Array],
      [Uint16Array, Int16Array],
      [Uint32Array, Int32Array, Float32Array],
      [Float64Array],
    ],
    F = Symbol(32),
    U = Symbol(16),
    P = Symbol(8),
    he = new Map()
  C.forEach((e, t) => e.forEach(e => he.set(e, t)))
  class q {
    constructor(e) {
      ;(this.g = e), (this.consumed = 0), e && (this.need = e.next().value)
    }
    fillFromReader(r) {
      return (
        (e = this),
        (l = function* () {
          var { done: e, value: t } = yield r.read()
          return e ? void this.close() : (this.write(t), this.fillFromReader(r))
        }),
        new (s = (s = i = void 0) || Promise)(function (r, t) {
          function n(e) {
            try {
              a(l.next(e))
            } catch (e) {
              t(e)
            }
          }
          function o(e) {
            try {
              a(l.throw(e))
            } catch (e) {
              t(e)
            }
          }
          function a(e) {
            var t
            e.done
              ? r(e.value)
              : ((t = e.value) instanceof s
                  ? t
                  : new s(function (e) {
                      e(t)
                    })
                ).then(n, o)
          }
          a((l = l.apply(e, i || [])).next())
        })
      )
      var e, i, s, l
    }
    consume() {
      this.buffer &&
        this.consumed &&
        (this.buffer.copyWithin(0, this.consumed),
        (this.buffer = this.buffer.subarray(0, this.buffer.length - this.consumed)),
        (this.consumed = 0))
    }
    demand(e, t) {
      return t && this.consume(), (this.need = e), this.flush()
    }
    read(r) {
      return new Promise((t, e) => {
        if (this.resolve) return e('last read not complete yet')
        ;(this.resolve = e => {
          delete this.resolve, delete this.need, t(e)
        }),
          this.demand(r, !0)
      })
    }
    readU32() {
      return this.read(F)
    }
    readU16() {
      return this.read(U)
    }
    readU8() {
      return this.read(P)
    }
    close() {
      this.g && this.g.return()
    }
    flush() {
      if (this.buffer && this.need) {
        let e = null
        const n = this.buffer.subarray(this.consumed)
        let t = 0
        var r = e => n.length < (t = e)
        if ('number' == typeof this.need) {
          if (r(this.need)) return
          e = n.subarray(0, t)
        } else if (this.need instanceof ArrayBuffer) {
          if (r(this.need.byteLength)) return
          new Uint8Array(this.need).set(n.subarray(0, t)), (e = this.need)
        } else if (this.need === F) {
          if (r(4)) return
          e = (n[0] << 24) | (n[1] << 16) | (n[2] << 8) | n[3]
        } else if (this.need === U) {
          if (r(2)) return
          e = (n[0] << 8) | n[1]
        } else if (this.need === P) {
          if (r(1)) return
          e = n[0]
        } else if (he.has(this.need.constructor)) {
          if (r(this.need.length << he.get(this.need.constructor))) return
          new Uint8Array(this.need.buffer, this.need.byteOffset).set(n.subarray(0, t)),
            (e = this.need)
        } else if (this.g) return void this.g.throw(new Error('Unsupported type'))
        return (
          (this.consumed += t),
          this.g ? this.demand(this.g.next(e).value, !0) : this.resolve && this.resolve(e),
          e
        )
      }
    }
    write(e) {
      e instanceof ArrayBuffer
        ? this.malloc(e.byteLength).set(new Uint8Array(e))
        : this.malloc(e.byteLength).set(new Uint8Array(e.buffer, e.byteOffset, e.byteLength)),
        (this.g || this.resolve) && this.flush()
    }
    writeU32(e) {
      this.malloc(4).set([(e >> 24) & 255, (e >> 16) & 255, (e >> 8) & 255, 255 & e]), this.flush()
    }
    writeU16(e) {
      this.malloc(2).set([(e >> 8) & 255, 255 & e]), this.flush()
    }
    writeU8(e) {
      ;(this.malloc(1)[0] = e), this.flush()
    }
    malloc(e) {
      if (this.buffer) {
        var t = this.buffer.length,
          r = t + e
        if (r <= this.buffer.buffer.byteLength - this.buffer.byteOffset)
          this.buffer = new Uint8Array(this.buffer.buffer, this.buffer.byteOffset, r)
        else {
          const e = new Uint8Array(r)
          e.set(this.buffer), (this.buffer = e)
        }
        return this.buffer.subarray(t, r)
      }
      return (this.buffer = new Uint8Array(e)), this.buffer
    }
  }
  ;(q.U32 = F), (q.U16 = U), (q.U8 = P)
  class me {
    constructor(a) {
      ;(this.log = function (e) {
        if (a._opt.debug && a._opt.debugLevel == w) {
          for (
            var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
              r = arguments.length,
              n = new Array(1 < r ? r - 1 : 0),
              o = 1;
            o < r;
            o++
          )
            n[o - 1] = arguments[o]
          console.log(`JbPro${t}:[✅✅✅][${e}]`, ...n)
        }
      }),
        (this.warn = function (e) {
          if (a._opt.debug && (a._opt.debugLevel == w || a._opt.debugLevel == v)) {
            for (
              var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
                r = arguments.length,
                n = new Array(1 < r ? r - 1 : 0),
                o = 1;
              o < r;
              o++
            )
              n[o - 1] = arguments[o]
            console.log(`JbPro${t}:[❗❗❗][${e}]`, ...n)
          }
        }),
        (this.error = function (e) {
          for (
            var t = a._opt.debugUuid ? `[${a._opt.debugUuid}]` : '',
              r = arguments.length,
              n = new Array(1 < r ? r - 1 : 0),
              o = 1;
            o < r;
            o++
          )
            n[o - 1] = arguments[o]
          console.error(`JbPro${t}:[❌❌❌][${e}]`, ...n)
        })
    }
  }
  class X {
    constructor(e) {
      ;(this._buffer = e),
        (this._buffer_index = 0),
        (this._total_bytes = e.byteLength),
        (this._total_bits = 8 * e.byteLength),
        (this._current_word = 0),
        (this._current_word_bits_left = 0)
    }
    destroy() {
      this._buffer = null
    }
    _fillCurrentWord() {
      var r = this._total_bytes - this._buffer_index
      if (r <= 0)
        console.error(
          'ExpGolomb: _fillCurrentWord() but no bytes available',
          this._total_bytes,
          this._buffer_index,
        )
      else {
        let e = Math.min(4, r),
          t = new Uint8Array(4)
        t.set(this._buffer.subarray(this._buffer_index, this._buffer_index + e)),
          (this._current_word = new DataView(t.buffer).getUint32(0, !1)),
          (this._buffer_index += e),
          (this._current_word_bits_left = 8 * e)
      }
    }
    readBits(e) {
      if (
        (32 < e && console.error('ExpGolomb: readBits() bits exceeded max 32bits!'),
        e <= this._current_word_bits_left)
      )
        return (
          (t = this._current_word >>> (32 - e)),
          (this._current_word <<= e),
          (this._current_word_bits_left -= e),
          t
        )
      var t = this._current_word_bits_left ? this._current_word : 0,
        e = ((t >>>= 32 - this._current_word_bits_left), e - this._current_word_bits_left),
        e = (this._fillCurrentWord(), Math.min(e, this._current_word_bits_left)),
        r = this._current_word >>> (32 - e)
      return (this._current_word <<= e), (this._current_word_bits_left -= e), (t << e) | r
    }
    readBool() {
      return 1 === this.readBits(1)
    }
    readByte() {
      return this.readBits(8)
    }
    _skipLeadingZero() {
      let e
      for (e = 0; e < this._current_word_bits_left; e++)
        if (0 != (this._current_word & (2147483648 >>> e)))
          return (this._current_word <<= e), (this._current_word_bits_left -= e), e
      return this._fillCurrentWord(), e + this._skipLeadingZero()
    }
    readUEG() {
      var e = this._skipLeadingZero()
      return this.readBits(e + 1) - 1
    }
    readSEG() {
      var e = this.readUEG()
      return 1 & e ? (e + 1) >>> 1 : -1 * (e >>> 1)
    }
  }
  class K {
    static _ebsp2rbsp(e) {
      let t = e,
        r = t.byteLength,
        n = new Uint8Array(r),
        o = 0
      for (let e = 0; e < r; e++)
        (2 <= e && 3 === t[e] && 0 === t[e - 1] && 0 === t[e - 2]) || ((n[o] = t[e]), o++)
      return new Uint8Array(n.buffer, 0, o)
    }
    static parseSPS(e) {
      let t = K._ebsp2rbsp(e),
        r = new X(t)
      r.readByte()
      var e = r.readByte(),
        n = (r.readByte(), r.readByte())
      r.readUEG()
      let o = K.getProfileString(e),
        a = K.getLevelString(n),
        i = 1,
        s = 420,
        l = 8
      if (
        (100 === e ||
          110 === e ||
          122 === e ||
          244 === e ||
          44 === e ||
          83 === e ||
          86 === e ||
          118 === e ||
          128 === e ||
          138 === e ||
          144 === e) &&
        (3 === (i = r.readUEG()) && r.readBits(1),
        i <= 3 && (s = [0, 420, 422, 444][i]),
        (l = r.readUEG() + 8),
        r.readUEG(),
        r.readBits(1),
        r.readBool())
      ) {
        var u = 3 !== i ? 8 : 12
        for (let e = 0; e < u; e++)
          r.readBool() && (e < 6 ? K._skipScalingList(r, 16) : K._skipScalingList(r, 64))
      }
      r.readUEG()
      n = r.readUEG()
      if (0 === n) r.readUEG()
      else if (1 === n) {
        r.readBits(1), r.readSEG(), r.readSEG()
        var d = r.readUEG()
        for (let e = 0; e < d; e++) r.readSEG()
      }
      var e = r.readUEG(),
        n = (r.readBits(1), r.readUEG()),
        c = r.readUEG(),
        f = r.readBits(1)
      0 === f && r.readBits(1), r.readBits(1)
      let p = 0,
        h = 0,
        m = 0,
        g = 0,
        y =
          (r.readBool() &&
            ((p = r.readUEG()), (h = r.readUEG()), (m = r.readUEG()), (g = r.readUEG())),
          1),
        _ = 1,
        w = 0,
        v = !0,
        b = 0,
        E = 0,
        k =
          (r.readBool() &&
            (r.readBool() &&
              (0 < (D = r.readByte()) && D < 16
                ? ((y = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][D - 1]),
                  (_ = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][D - 1]))
                : 255 === D &&
                  ((y = (r.readByte() << 8) | r.readByte()),
                  (_ = (r.readByte() << 8) | r.readByte()))),
            r.readBool() && r.readBool(),
            r.readBool() && (r.readBits(4), r.readBool() && r.readBits(24)),
            r.readBool() && (r.readUEG(), r.readUEG()),
            r.readBool() &&
              ((D = r.readBits(32)),
              (A = r.readBits(32)),
              (v = r.readBool()),
              (b = A),
              (E = 2 * D),
              (w = b / E))),
          1),
        T = ((1 === y && 1 === _) || (k = y / _), 0),
        B = 0
      B = 0 === i ? ((T = 1), 2 - f) : ((T = 3 === i ? 1 : 2), (1 === i ? 2 : 1) * (2 - f))
      var A = 16 * (n + 1),
        D = 16 * (c + 1) * (2 - f),
        n = ((A -= (p + h) * T), (D -= (m + g) * B), Math.ceil(A * k))
      return (
        r.destroy(),
        (r = null),
        {
          profile_string: o,
          level_string: a,
          bit_depth: l,
          ref_frames: e,
          chroma_format: s,
          chroma_format_string: K.getChromaFormatString(s),
          frame_rate: { fixed: v, fps: w, fps_den: E, fps_num: b },
          sar_ratio: { width: y, height: _ },
          codec_size: { width: A, height: D },
          present_size: { width: n, height: D },
        }
      )
    }
    static parseSPS$2(e) {
      let r = e.subarray(1, 4),
        n = 'avc1.'
      for (let t = 0; t < 3; t++) {
        let e = r[t].toString(16)
        e.length < 2 && (e = '0' + e), (n += e)
      }
      let t = K._ebsp2rbsp(e),
        o = new X(t)
      o.readByte()
      var e = o.readByte(),
        a = (o.readByte(), o.readByte())
      o.readUEG()
      let i = K.getProfileString(e),
        s = K.getLevelString(a),
        l = 1,
        u = 420,
        d = 8,
        c = 8
      if (
        (100 === e ||
          110 === e ||
          122 === e ||
          244 === e ||
          44 === e ||
          83 === e ||
          86 === e ||
          118 === e ||
          128 === e ||
          138 === e ||
          144 === e) &&
        (3 === (l = o.readUEG()) && o.readBits(1),
        l <= 3 && (u = [0, 420, 422, 444][l]),
        (d = o.readUEG() + 8),
        (c = o.readUEG() + 8),
        o.readBits(1),
        o.readBool())
      ) {
        var f = 3 !== l ? 8 : 12
        for (let e = 0; e < f; e++)
          o.readBool() && (e < 6 ? K._skipScalingList(o, 16) : K._skipScalingList(o, 64))
      }
      o.readUEG()
      var p = o.readUEG()
      if (0 === p) o.readUEG()
      else if (1 === p) {
        o.readBits(1), o.readSEG(), o.readSEG()
        var h = o.readUEG()
        for (let e = 0; e < h; e++) o.readSEG()
      }
      var p = o.readUEG(),
        m = (o.readBits(1), o.readUEG()),
        g = o.readUEG(),
        y = o.readBits(1)
      0 === y && o.readBits(1), o.readBits(1)
      let _ = 0,
        w = 0,
        v = 0,
        b = 0,
        E =
          (o.readBool() &&
            ((_ = o.readUEG()), (w = o.readUEG()), (v = o.readUEG()), (b = o.readUEG())),
          1),
        k = 1,
        T = 0,
        B = !0,
        A = 0,
        D = 0,
        S =
          (o.readBool() &&
            (o.readBool() &&
              (0 < (P = o.readByte()) && P < 16
                ? ((E = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][P - 1]),
                  (k = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][P - 1]))
                : 255 === P &&
                  ((E = (o.readByte() << 8) | o.readByte()),
                  (k = (o.readByte() << 8) | o.readByte()))),
            o.readBool() && o.readBool(),
            o.readBool() && (o.readBits(4), o.readBool() && o.readBits(24)),
            o.readBool() && (o.readUEG(), o.readUEG()),
            o.readBool() &&
              ((P = o.readBits(32)),
              (U = o.readBits(32)),
              (B = o.readBool()),
              (A = U),
              (D = 2 * P),
              (T = A / D))),
          1),
        C = ((1 === E && 1 === k) || (S = E / k), 0),
        F = 0
      F = 0 === l ? ((C = 1), 2 - y) : ((C = 3 === l ? 1 : 2), (1 === l ? 2 : 1) * (2 - y))
      var U = 16 * (m + 1),
        P = 16 * (g + 1) * (2 - y),
        m = ((U -= (_ + w) * C), (P -= (v + b) * F), Math.ceil(U * S))
      return (
        o.destroy(),
        (o = null),
        {
          codec_mimetype: n,
          profile_idc: e,
          level_idc: a,
          profile_string: i,
          level_string: s,
          chroma_format_idc: l,
          bit_depth: d,
          bit_depth_luma: d,
          bit_depth_chroma: c,
          ref_frames: p,
          chroma_format: u,
          chroma_format_string: K.getChromaFormatString(u),
          frame_rate: { fixed: B, fps: T, fps_den: D, fps_num: A },
          sar_ratio: { width: E, height: k },
          codec_size: { width: U, height: P },
          present_size: { width: m, height: P },
        }
      )
    }
    static _skipScalingList(t, r) {
      let n = 8,
        o = 8,
        a
      for (let e = 0; e < r; e++)
        0 !== o && ((a = t.readSEG()), (o = (n + a + 256) % 256)), (n = 0 === o ? n : o)
    }
    static getProfileString(e) {
      switch (e) {
        case 66:
          return 'Baseline'
        case 77:
          return 'Main'
        case 88:
          return 'Extended'
        case 100:
          return 'High'
        case 110:
          return 'High10'
        case 122:
          return 'High422'
        case 244:
          return 'High444'
        default:
          return 'Unknown'
      }
    }
    static getLevelString(e) {
      return (e / 10).toFixed(1)
    }
    static getChromaFormatString(e) {
      switch (e) {
        case 420:
          return '4:2:0'
        case 422:
          return '4:2:2'
        case 444:
          return '4:4:4'
        default:
          return 'Unknown'
      }
    }
  }
  class ge {
    constructor(e) {
      ;(this.buffer = e),
        (this.buflen = e.length),
        (this.bufpos = 0),
        (this.bufoff = 0),
        (this.iserro = !1)
    }
    read(e) {
      let t = 0,
        r
      for (; e; ) {
        if (e < 0 || this.bufpos >= this.buflen) return (this.iserro = !0), 0
        ;(this.iserro = !1),
          (r = 8 < this.bufoff + e ? 8 - this.bufoff : e),
          (t =
            (t <<= r) + ((this.buffer[this.bufpos] >> (8 - this.bufoff - r)) & (255 >> (8 - r)))),
          (this.bufoff += r),
          (e -= r),
          8 == this.bufoff && (this.bufpos++, (this.bufoff = 0))
      }
      return t
    }
    look(e) {
      var t = this.bufpos,
        r = this.bufoff,
        e = this.read(e)
      return (this.bufpos = t), (this.bufoff = r), e
    }
    read_golomb() {
      let e
      for (e = 0; 0 === this.read(1) && !this.iserro; e++);
      return (1 << e) + this.read(e) - 1
    }
  }
  function ye(r) {
    const o = {},
      n = new DataView(r.buffer)
    let e = n.getUint8(0),
      t = n.getUint8(1)
    if ((n.getUint8(2), n.getUint8(3), 1 !== e || 0 === t)) return {}
    var a = 1 + (3 & n.getUint8(4))
    if (3 != a && 4 != a) return {}
    var i = 31 & n.getUint8(5)
    if (0 == i) return {}
    let s = 6
    for (let t = 0; t < i; t++) {
      var l = n.getUint16(s, !1)
      if (((s += 2), 0 !== l)) {
        let e = new Uint8Array(r.buffer, s, l)
        s += l
        l = K.parseSPS(e)
        if (0 === t) {
          ;(o.sps = e),
            (o.timescale = 1e3),
            (o.codecWidth = l.codec_size.width),
            (o.codecHeight = l.codec_size.height),
            (o.presentWidth = l.present_size.width),
            (o.presentHeight = l.present_size.height),
            (o.profile = l.profile_string),
            (o.level = l.level_string),
            (o.bitDepth = l.bit_depth),
            (o.chromaFormat = l.chroma_format),
            (o.sarRatio = l.sar_ratio),
            (o.frameRate = l.frame_rate),
            (!1 !== l.frame_rate.fixed &&
              0 !== l.frame_rate.fps_num &&
              0 !== l.frame_rate.fps_den) ||
              (o.frameRate = { fixed: !0, fps: 23.976, fps_num: 23976, fps_den: 1e3 })
          var l = o.frameRate.fps_den,
            u = o.frameRate.fps_num
          o.refSampleDuration = o.timescale * (l / u)
          let r = e.subarray(1, 4),
            n = 'avc1.'
          for (let t = 0; t < 3; t++) {
            let e = r[t].toString(16)
            e.length < 2 && (e = '0' + e), (n += e)
          }
          o.codec = n
        }
      }
    }
    var d = n.getUint8(s)
    if (0 === d) return {}
    s++
    for (let e = 0; e < d; e++) {
      var c,
        f = n.getUint16(s, !1)
      ;(s += 2), 0 !== f && ((c = new Uint8Array(r.buffer, s, f)), (s += f), (o.pps = c))
    }
    if (((o.videoType = 'avc'), o.sps)) {
      const r = o.sps.byteLength,
        n = new Uint8Array([(r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]),
        e = new Uint8Array(r + 4)
      e.set(n, 0), e.set(o.sps, 4), (o.sps = e)
    }
    if (o.pps) {
      const r = o.pps.byteLength,
        n = new Uint8Array([(r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]),
        e = new Uint8Array(r + 4)
      e.set(n, 0), e.set(o.pps, 4), (o.pps = e)
    }
    return o
  }
  function _e(e) {
    const t = e.byteLength,
      r = new Uint8Array(4),
      n =
        ((r[0] = (t >>> 24) & 255),
        (r[1] = (t >>> 16) & 255),
        (r[2] = (t >>> 8) & 255),
        (r[3] = 255 & t),
        new Uint8Array(t + 4))
    return n.set(r, 0), n.set(e, 4), n
  }
  function Y(e) {
    return 31 & e[0]
  }
  function we(e) {
    return e === E
  }
  function ve(e) {
    return (t = e) !== O && t !== G && !we(e)
    var t
  }
  function be(e) {
    return e === b
  }
  const Ee = e => {
      let t = e,
        r = t.byteLength,
        n = new Uint8Array(r),
        o = 0
      for (let e = 0; e < r; e++)
        (2 <= e && 3 === t[e] && 0 === t[e - 1] && 0 === t[e - 2]) || ((n[o] = t[e]), o++)
      return new Uint8Array(n.buffer, 0, o)
    },
    ke = e => {
      switch (e) {
        case 0:
          return '4:0:0'
        case 1:
          return '4:2:0'
        case 2:
          return '4:2:2'
        case 3:
          return '4:4:4'
        default:
          return 'Unknown'
      }
    }
  function Te(e) {
    return (126 & e[0]) >> 1
  }
  function Be(e) {
    return parseInt(e) === e
  }
  function Ae(e) {
    if (Be(e.length)) {
      for (var t = 0; t < e.length; t++) if (!Be(e[t]) || e[t] < 0 || 255 < e[t]) return
      return 1
    }
  }
  function a(e, t) {
    if (e.buffer && 'Uint8Array' === e.name)
      return (e = t ? (e.slice ? e.slice() : Array.prototype.slice.call(e)) : e)
    if (Array.isArray(e)) {
      if (Ae(e)) return new Uint8Array(e)
      throw new Error('Array contains invalid value: ' + e)
    }
    if (Be(e.length) && Ae(e)) return new Uint8Array(e)
    throw new Error('unsupported array-like object')
  }
  function l(e) {
    return new Uint8Array(e)
  }
  function i(e, t, r, n, o) {
    ;(null == n && null == o) ||
      (e = e.slice ? e.slice(n, o) : Array.prototype.slice.call(e, n, o)),
      t.set(e, r)
  }
  var De,
    m = {
      toBytes: function (e) {
        var t = [],
          r = 0
        for (e = encodeURI(e); r < e.length; ) {
          var n = e.charCodeAt(r++)
          37 === n ? (t.push(parseInt(e.substr(r, 2), 16)), (r += 2)) : t.push(n)
        }
        return a(t)
      },
      fromBytes: function (e) {
        for (var t = [], r = 0; r < e.length; ) {
          var n = e[r]
          n < 128
            ? (t.push(String.fromCharCode(n)), r++)
            : 191 < n && n < 224
            ? (t.push(String.fromCharCode(((31 & n) << 6) | (63 & e[r + 1]))), (r += 2))
            : (t.push(
                String.fromCharCode(((15 & n) << 12) | ((63 & e[r + 1]) << 6) | (63 & e[r + 2])),
              ),
              (r += 3))
        }
        return t.join('')
      },
    },
    g =
      ((De = '0123456789abcdef'),
      {
        toBytes: function (e) {
          for (var t = [], r = 0; r < e.length; r += 2) t.push(parseInt(e.substr(r, 2), 16))
          return t
        },
        fromBytes: function (e) {
          for (var t = [], r = 0; r < e.length; r++) {
            var n = e[r]
            t.push(De[(240 & n) >> 4] + De[15 & n])
          }
          return t.join('')
        },
      }),
    Se = { 16: 10, 24: 12, 32: 14 },
    Ce = [
      1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53,
      106, 212, 179, 125, 250, 239, 197, 145,
    ],
    c = [
      99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125,
      250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204,
      52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235,
      39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209,
      0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51,
      133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218,
      33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,
      96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73,
      6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108,
      86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75,
      189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225,
      248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191,
      230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22,
    ],
    u = [
      82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130,
      155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61,
      238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109,
      139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146,
      108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0,
      140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193,
      175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240,
      180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71,
      241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210,
      121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18,
      16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156,
      239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126,
      186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125,
    ],
    Fe = [
      3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041,
      2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294,
      3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105,
      4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686,
      2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177,
      4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459,
      2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416,
      932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438,
      1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093,
      3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974,
      1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436,
      1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945,
      1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882,
      1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552,
      67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438,
      2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041,
      2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708,
      638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866,
      4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720,
      2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521,
      1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286,
      1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046,
      1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491,
      1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514,
      4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016,
      1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932,
      3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954,
      1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967,
      2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195,
      731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754,
      361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984,
      160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208,
      1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986,
    ],
    Ue = [
      2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493,
      1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086,
      1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592,
      3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906,
      1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231,
      1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049,
      1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885,
      3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098,
      2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018,
      4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187,
      1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132,
      3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298,
      3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595,
      3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160,
      1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239,
      2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241,
      807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324,
      3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405,
      2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340,
      1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540,
      2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770,
      3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098,
      2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389,
      2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082,
      2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758,
      607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327,
      3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421,
      2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407,
      3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776,
      857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487,
      550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681,
      387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509,
      287182607, 3413881008, 4238890068, 3597515707, 975967766,
    ],
    Pe = [
      1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791,
      3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099,
      1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841,
      1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188,
      2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606,
      1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169,
      3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936,
      2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843,
      661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803,
      1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817,
      3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784,
      4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938,
      1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931,
      1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727,
      1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568,
      2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818,
      560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259,
      3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534,
      1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615,
      3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416,
      339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090,
      169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580,
      1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799,
      1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694,
      4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376,
      628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637,
      1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574,
      3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557,
      1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160,
      2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094,
      2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649,
      2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033,
      762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126,
    ],
    xe = [
      1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006,
      3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549,
      1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266,
      1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243,
      2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756,
      1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834,
      3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336,
      2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653,
      656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878,
      1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402,
      3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704,
      4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628,
      1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621,
      1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782,
      1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408,
      2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063,
      555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894,
      3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284,
      1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070,
      3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491,
      336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700,
      168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595,
      1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254,
      1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844,
      4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296,
      623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097,
      1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644,
      3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282,
      1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595,
      2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324,
      2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649,
      2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153,
      757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436,
    ],
    Le = [
      1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787,
      540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495,
      3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150,
      59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676,
      1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444,
      1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996,
      4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562,
      3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354,
      33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829,
      3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634,
      1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621,
      1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453,
      126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987,
      841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852,
      1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071,
      1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187,
      4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775,
      1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747,
      3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285,
      496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858,
      2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334,
      2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698,
      4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331,
      3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232,
      3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150,
      832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845,
      4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895,
      2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798,
      3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441,
      3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775,
      1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751,
      371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248,
      2076935265, 3576870512, 1215061108, 3501741890,
    ],
    Re = [
      1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216,
      2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652,
      2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855,
      3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433,
      1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132,
      3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376,
      2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543,
      711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122,
      1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130,
      2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767,
      1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868,
      4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403,
      3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696,
      1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604,
      975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459,
      370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840,
      3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349,
      3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309,
      1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024,
      3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879,
      3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534,
      651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776,
      1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129,
      2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350,
      2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226,
      824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336,
      4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405,
      457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781,
      1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127,
      901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469,
      1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035,
      213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980,
      1893020342, 1950903388, 1120974935,
    ],
    Ie = [
      2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867,
      4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077,
      2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150,
      4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568,
      3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312,
      984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721,
      731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663,
      2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107,
      2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340,
      4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224,
      2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892,
      3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849,
      1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627,
      1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260,
      1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796,
      1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803,
      2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354,
      1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299,
      574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114,
      1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744,
      752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754,
      2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176,
      4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632,
      1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991,
      3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639,
      2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196,
      3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425,
      2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431,
      3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897,
      3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199,
      2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885,
      621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195,
      3060847922, 1551124588, 1463996600,
    ],
    Me = [
      4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347,
      821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325,
      2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835,
      2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233,
      3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417,
      3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046,
      137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843,
      1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082,
      377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905,
      2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262,
      1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348,
      1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743,
      3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766,
      1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339,
      908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874,
      303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765,
      514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156,
      4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243,
      3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325,
      3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424,
      2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749,
      3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816,
      972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952,
      2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786,
      3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954,
      2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121,
      3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430,
      1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011,
      3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542,
      1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219,
      4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990,
      3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555,
      850817237, 1817998408, 3092726480,
    ],
    $e = [
      0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496,
      2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529,
      3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474,
      3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407,
      3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343,
      3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942,
      2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150,
      59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414,
      1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520,
      3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269,
      3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366,
      1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127,
      1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711,
      1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311,
      1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783,
      742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655,
      3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890,
      3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483,
      2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987,
      126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195,
      2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266,
      3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178,
      2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895,
      4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780,
      1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852,
      67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369,
      3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144,
      2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747,
      3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627,
      641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843,
      1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808,
      496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880,
      1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469,
      4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150,
      2438237621, 2203032232, 2370213795,
    ],
    Ne = [
      0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576,
      1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459,
      2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614,
      2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537,
      3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543,
      1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535,
      77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207,
      3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884,
      3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975,
      3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824,
      3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461,
      1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933,
      355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630,
      2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349,
      3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048,
      3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120,
      213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296,
      1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347,
      3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022,
      2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781,
      1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101,
      870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558,
      2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875,
      3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675,
      560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035,
      2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597,
      486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021,
      1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122,
      2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703,
      3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796,
      2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698,
      1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410,
      325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122,
      4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461,
      2827177882, 2743944855,
    ],
    Oe = [
      0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376,
      1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639,
      3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174,
      4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557,
      2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663,
      2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032,
      3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033,
      2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201,
      344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180,
      2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772,
      313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932,
      2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135,
      3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085,
      3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354,
      3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963,
      2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195,
      621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571,
      1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177,
      4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592,
      2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3,
      861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576,
      1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228,
      1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836,
      1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260,
      2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885,
      3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539,
      2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018,
      3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005,
      1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572,
      1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868,
      752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663,
      793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415,
      1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124,
      4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285,
      2377486676, 2594734927, 2544078150,
    ],
    Ge = [
      0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936,
      1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874,
      2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524,
      2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222,
      4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221,
      227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909,
      1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947,
      2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729,
      3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905,
      1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417,
      621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777,
      4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275,
      3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550,
      1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454,
      213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718,
      3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908,
      2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026,
      2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727,
      3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017,
      2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011,
      1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571,
      274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568,
      4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550,
      2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812,
      1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348,
      499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234,
      2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828,
      3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692,
      57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068,
      1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966,
      2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243,
      2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577,
      3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689,
      133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201,
      1335535747, 1184342925,
    ]
  function Ve(e) {
    for (var t = [], r = 0; r < e.length; r += 4)
      t.push((e[r] << 24) | (e[r + 1] << 16) | (e[r + 2] << 8) | e[r + 3])
    return t
  }
  function n(e) {
    if (!(this instanceof n)) throw Error('AES must be instanitated with `new`')
    Object.defineProperty(this, 'key', { value: a(e, !0) }), this._prepare()
  }
  function r(e) {
    if (!(this instanceof r)) throw Error('AES must be instanitated with `new`')
    ;(this.description = 'Electronic Code Block'), (this.name = 'ecb'), (this._aes = new n(e))
  }
  function s(e, t) {
    if (!(this instanceof s)) throw Error('AES must be instanitated with `new`')
    if (((this.description = 'Cipher Block Chaining'), (this.name = 'cbc'), t)) {
      if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 bytes)')
    } else t = l(16)
    ;(this._lastCipherblock = a(t, !0)), (this._aes = new n(e))
  }
  function d(e, t, r) {
    if (!(this instanceof d)) throw Error('AES must be instanitated with `new`')
    if (((this.description = 'Cipher Feedback'), (this.name = 'cfb'), t)) {
      if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 size)')
    } else t = l(16)
    ;(this.segmentSize = r = r || 1), (this._shiftRegister = a(t, !0)), (this._aes = new n(e))
  }
  function f(e, t) {
    if (!(this instanceof f)) throw Error('AES must be instanitated with `new`')
    if (((this.description = 'Output Feedback'), (this.name = 'ofb'), t)) {
      if (16 != t.length) throw new Error('invalid initialation vector size (must be 16 bytes)')
    } else t = l(16)
    ;(this._lastPrecipher = a(t, !0)), (this._lastPrecipherIndex = 16), (this._aes = new n(e))
  }
  function p(e) {
    if (!(this instanceof p)) throw Error('Counter must be instanitated with `new`')
    'number' == typeof (e = 0 === e || e ? e : 1)
      ? ((this._counter = l(16)), this.setValue(e))
      : this.setBytes(e)
  }
  function h(e, t) {
    if (!(this instanceof h)) throw Error('AES must be instanitated with `new`')
    ;(this.description = 'Counter'),
      (this.name = 'ctr'),
      t instanceof p || (t = new p(t)),
      (this._counter = t),
      (this._remainingCounter = null),
      (this._remainingCounterIndex = 16),
      (this._aes = new n(e))
  }
  ;(n.prototype._prepare = function () {
    var e = Se[this.key.length]
    if (null == e) throw new Error('invalid key size (must be 16, 24 or 32 bytes)')
    ;(this._Ke = []), (this._Kd = [])
    for (var t = 0; t <= e; t++) this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0])
    for (var r, n = 4 * (e + 1), o = this.key.length / 4, a = Ve(this.key), t = 0; t < o; t++)
      (this._Ke[(r = t >> 2)][t % 4] = a[t]), (this._Kd[e - r][t % 4] = a[t])
    for (var i, s = 0, l = o; l < n; ) {
      if (
        ((i = a[o - 1]),
        (a[0] ^=
          (c[(i >> 16) & 255] << 24) ^
          (c[(i >> 8) & 255] << 16) ^
          (c[255 & i] << 8) ^
          c[(i >> 24) & 255] ^
          (Ce[s] << 24)),
        (s += 1),
        8 != o)
      )
        for (t = 1; t < o; t++) a[t] ^= a[t - 1]
      else {
        for (t = 1; t < o / 2; t++) a[t] ^= a[t - 1]
        for (
          i = a[o / 2 - 1],
            a[o / 2] ^=
              c[255 & i] ^
              (c[(i >> 8) & 255] << 8) ^
              (c[(i >> 16) & 255] << 16) ^
              (c[(i >> 24) & 255] << 24),
            t = o / 2 + 1;
          t < o;
          t++
        )
          a[t] ^= a[t - 1]
      }
      for (t = 0; t < o && l < n; )
        (this._Ke[(u = l >> 2)][(d = l % 4)] = a[t]), (this._Kd[e - u][d] = a[t++]), l++
    }
    for (var u = 1; u < e; u++)
      for (var d = 0; d < 4; d++)
        (i = this._Kd[u][d]),
          (this._Kd[u][d] =
            $e[(i >> 24) & 255] ^ Ne[(i >> 16) & 255] ^ Oe[(i >> 8) & 255] ^ Ge[255 & i])
  }),
    (n.prototype.encrypt = function (e) {
      if (16 != e.length) throw new Error('invalid plaintext size (must be 16 bytes)')
      for (var t = this._Ke.length - 1, r = [0, 0, 0, 0], n = Ve(e), o = 0; o < 4; o++)
        n[o] ^= this._Ke[0][o]
      for (var a = 1; a < t; a++) {
        for (o = 0; o < 4; o++)
          r[o] =
            Fe[(n[o] >> 24) & 255] ^
            Ue[(n[(o + 1) % 4] >> 16) & 255] ^
            Pe[(n[(o + 2) % 4] >> 8) & 255] ^
            xe[255 & n[(o + 3) % 4]] ^
            this._Ke[a][o]
        n = r.slice()
      }
      for (var i, s = l(16), o = 0; o < 4; o++)
        (i = this._Ke[t][o]),
          (s[4 * o] = 255 & (c[(n[o] >> 24) & 255] ^ (i >> 24))),
          (s[4 * o + 1] = 255 & (c[(n[(o + 1) % 4] >> 16) & 255] ^ (i >> 16))),
          (s[4 * o + 2] = 255 & (c[(n[(o + 2) % 4] >> 8) & 255] ^ (i >> 8))),
          (s[4 * o + 3] = 255 & (c[255 & n[(o + 3) % 4]] ^ i))
      return s
    }),
    (n.prototype.decrypt = function (e) {
      if (16 != e.length) throw new Error('invalid ciphertext size (must be 16 bytes)')
      for (var t = this._Kd.length - 1, r = [0, 0, 0, 0], n = Ve(e), o = 0; o < 4; o++)
        n[o] ^= this._Kd[0][o]
      for (var a = 1; a < t; a++) {
        for (o = 0; o < 4; o++)
          r[o] =
            Le[(n[o] >> 24) & 255] ^
            Re[(n[(o + 3) % 4] >> 16) & 255] ^
            Ie[(n[(o + 2) % 4] >> 8) & 255] ^
            Me[255 & n[(o + 1) % 4]] ^
            this._Kd[a][o]
        n = r.slice()
      }
      for (var i, s = l(16), o = 0; o < 4; o++)
        (i = this._Kd[t][o]),
          (s[4 * o] = 255 & (u[(n[o] >> 24) & 255] ^ (i >> 24))),
          (s[4 * o + 1] = 255 & (u[(n[(o + 3) % 4] >> 16) & 255] ^ (i >> 16))),
          (s[4 * o + 2] = 255 & (u[(n[(o + 2) % 4] >> 8) & 255] ^ (i >> 8))),
          (s[4 * o + 3] = 255 & (u[255 & n[(o + 1) % 4]] ^ i))
      return s
    }),
    (r.prototype.encrypt = function (e) {
      if ((e = a(e)).length % 16 != 0)
        throw new Error('invalid plaintext size (must be multiple of 16 bytes)')
      for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16)
        i(e, r, 0, n, n + 16), i((r = this._aes.encrypt(r)), t, n)
      return t
    }),
    (r.prototype.decrypt = function (e) {
      if ((e = a(e)).length % 16 != 0)
        throw new Error('invalid ciphertext size (must be multiple of 16 bytes)')
      for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16)
        i(e, r, 0, n, n + 16), i((r = this._aes.decrypt(r)), t, n)
      return t
    }),
    (s.prototype.encrypt = function (e) {
      if ((e = a(e)).length % 16 != 0)
        throw new Error('invalid plaintext size (must be multiple of 16 bytes)')
      for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16) {
        i(e, r, 0, n, n + 16)
        for (var o = 0; o < 16; o++) r[o] ^= this._lastCipherblock[o]
        ;(this._lastCipherblock = this._aes.encrypt(r)), i(this._lastCipherblock, t, n)
      }
      return t
    }),
    (s.prototype.decrypt = function (e) {
      if ((e = a(e)).length % 16 != 0)
        throw new Error('invalid ciphertext size (must be multiple of 16 bytes)')
      for (var t = l(e.length), r = l(16), n = 0; n < e.length; n += 16) {
        i(e, r, 0, n, n + 16)
        for (var r = this._aes.decrypt(r), o = 0; o < 16; o++)
          t[n + o] = r[o] ^ this._lastCipherblock[o]
        i(e, this._lastCipherblock, 0, n, n + 16)
      }
      return t
    }),
    (d.prototype.encrypt = function (e) {
      if (e.length % this.segmentSize != 0)
        throw new Error('invalid plaintext size (must be segmentSize bytes)')
      for (var t = a(e, !0), r = 0; r < t.length; r += this.segmentSize) {
        for (var n = this._aes.encrypt(this._shiftRegister), o = 0; o < this.segmentSize; o++)
          t[r + o] ^= n[o]
        i(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
          i(t, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
      }
      return t
    }),
    (d.prototype.decrypt = function (e) {
      if (e.length % this.segmentSize != 0)
        throw new Error('invalid ciphertext size (must be segmentSize bytes)')
      for (var t = a(e, !0), r = 0; r < t.length; r += this.segmentSize) {
        for (var n = this._aes.encrypt(this._shiftRegister), o = 0; o < this.segmentSize; o++)
          t[r + o] ^= n[o]
        i(this._shiftRegister, this._shiftRegister, 0, this.segmentSize),
          i(e, this._shiftRegister, 16 - this.segmentSize, r, r + this.segmentSize)
      }
      return t
    }),
    (f.prototype.decrypt = f.prototype.encrypt =
      function (e) {
        for (var t = a(e, !0), r = 0; r < t.length; r++)
          16 === this._lastPrecipherIndex &&
            ((this._lastPrecipher = this._aes.encrypt(this._lastPrecipher)),
            (this._lastPrecipherIndex = 0)),
            (t[r] ^= this._lastPrecipher[this._lastPrecipherIndex++])
        return t
      }),
    (p.prototype.setValue = function (e) {
      if ('number' != typeof e || parseInt(e) != e)
        throw new Error('invalid counter value (must be an integer)')
      if (e > Number.MAX_SAFE_INTEGER) throw new Error('integer value out of safe range')
      for (var t = 15; 0 <= t; --t) (this._counter[t] = e % 256), (e = parseInt(e / 256))
    }),
    (p.prototype.setBytes = function (e) {
      if (16 != (e = a(e, !0)).length)
        throw new Error('invalid counter bytes size (must be 16 bytes)')
      this._counter = e
    }),
    (p.prototype.increment = function () {
      for (var e = 15; 0 <= e; e--) {
        if (255 !== this._counter[e]) {
          this._counter[e]++
          break
        }
        this._counter[e] = 0
      }
    })
  h.prototype.decrypt = h.prototype.encrypt = function (e) {
    for (var t = a(e, !0), r = 0; r < t.length; r++)
      16 === this._remainingCounterIndex &&
        ((this._remainingCounter = this._aes.encrypt(this._counter._counter)),
        (this._remainingCounterIndex = 0),
        this._counter.increment()),
        (t[r] ^= this._remainingCounter[this._remainingCounterIndex++])
    return t
  }
  const ze = {
    AES: n,
    Counter: p,
    ModeOfOperation: { ecb: r, cbc: s, cfb: d, ofb: f, ctr: h },
    utils: { hex: g, utf8: m },
    padding: {
      pkcs7: {
        pad: function (e) {
          var t = 16 - ((e = a(e, !0)).length % 16),
            r = l(e.length + t)
          i(e, r)
          for (var n = e.length; n < r.length; n++) r[n] = t
          return r
        },
        strip: function (e) {
          if ((e = a(e, !0)).length < 16) throw new Error('PKCS#7 invalid length')
          var t = e[e.length - 1]
          if (16 < t) throw new Error('PKCS#7 padding byte out of range')
          for (var r = e.length - t, n = 0; n < t; n++)
            if (e[r + n] !== t) throw new Error('PKCS#7 invalid padding byte')
          var o = l(r)
          return i(e, o, 0, 0, r), o
        },
      },
    },
    _arrayTest: { coerceArray: a, createArray: l, copyArray: i },
  }
  function je(l) {
    function n() {
      r && (r.abort(), (r = null))
    }
    let o = [],
      u = [],
      a = {},
      r = new AbortController(),
      i = null,
      s = null,
      e = null,
      d = null,
      c = null,
      f = null,
      p = !1,
      h = !1,
      m = !1,
      g = !1,
      y = null,
      _ = null,
      w = null,
      v = [],
      b = 0,
      E = 0,
      t = null,
      k = null,
      T = 0,
      B = 0,
      A = !1,
      D = !1,
      S = () => {
        var e = (function () {
          {
            var r = Q
            let t = ''
            if ('object' == typeof r)
              try {
                ;(t = JSON.stringify(r)), (t = JSON.parse(t))
              } catch (e) {
                t = r
              }
            else t = r
            return t
          }
        })()
        return {
          debug: e.debug,
          debugLevel: e.debugLevel,
          debugUuid: e.debugUuid,
          useOffscreen: e.useOffscreen,
          useWCS: e.useWCS,
          videoBuffer: e.videoBuffer,
          videoBufferDelay: e.videoBufferDelay,
          openWebglAlignment: e.openWebglAlignment,
          playType: e.playType,
          hasAudio: e.hasAudio,
          hasVideo: e.hasVideo,
          playbackRate: 1,
          playbackForwardMaxRateDecodeIFrame: e.playbackForwardMaxRateDecodeIFrame,
          playbackIsCacheBeforeDecodeForFpsRender: e.playbackConfig.isCacheBeforeDecodeForFpsRender,
          sampleRate: 0,
          networkDelay: e.networkDelay,
          visibility: !0,
          useSIMD: e.useSIMD,
          isRecording: !1,
          recordType: e.recordType,
          isNakedFlow: e.isNakedFlow,
          checkFirstIFrame: e.checkFirstIFrame,
          audioBufferSize: 1024,
          isCrypto: e.isCrypto,
          cryptoKey: e.cryptoKey,
          cryptoIV: e.cryptoIV,
        }
      },
      C =
        ('VideoEncoder' in self &&
          (a = {
            hasInit: !1,
            isEmitInfo: !1,
            offscreenCanvas: null,
            offscreenCanvasCtx: null,
            decoder: new VideoDecoder({
              output: function (t) {
                var e
                a.isEmitInfo ||
                  (F.debug.log('worker', 'Webcodecs Video Decoder initSize'),
                  postMessage({ cmd: ee, w: t.codedWidth, h: t.codedHeight }),
                  (a.isEmitInfo = !0),
                  (a.offscreenCanvas = new OffscreenCanvas(t.codedWidth, t.codedHeight)),
                  (a.offscreenCanvasCtx = a.offscreenCanvas.getContext('2d'))),
                  'function' == typeof t.createImageBitmap
                    ? t.createImageBitmap().then(e => {
                        a.offscreenCanvasCtx.drawImage(e, 0, 0, t.codedWidth, t.codedHeight)
                        e = a.offscreenCanvas.transferToImageBitmap()
                        postMessage({ cmd: R, buffer: e, delay: F.delay, ts: 0 }, [e]),
                          setTimeout(function () {
                            t.close ? t.close() : t.destroy()
                          }, 100)
                      })
                    : (a.offscreenCanvasCtx.drawImage(t, 0, 0, t.codedWidth, t.codedHeight),
                      (e = a.offscreenCanvas.transferToImageBitmap()),
                      postMessage({ cmd: R, buffer: e, delay: F.delay, ts: 0 }, [e]),
                      setTimeout(function () {
                        t.close ? t.close() : t.destroy()
                      }, 100))
              },
              error: function (e) {
                F.debug.error('worker', 'VideoDecoder error', e)
              },
            }),
            decode: function (e, t, r) {
              var n = e[0] >> 4 == 1
              if (a.hasInit) {
                const r = new EncodedVideoChunk({
                  data: e.slice(5),
                  timestamp: t,
                  type: n ? 'key' : 'delta',
                })
                a.decoder.decode(r)
              } else if (n && 0 === e[1]) {
                const t = 15 & e[0],
                  r =
                    (postMessage({ cmd: re, code: t }),
                    (function (e) {
                      let r = e.subarray(1, 4),
                        n = 'avc1.'
                      for (let t = 0; t < 3; t++) {
                        let e = r[t].toString(16)
                        e.length < 2 && (e = '0' + e), (n += e)
                      }
                      return { codec: n, description: e }
                    })(e.slice(5)))
                postMessage({ cmd: ne, buffer: e, codecId: t }, [e.buffer]),
                  a.decoder.configure(r),
                  (a.hasInit = !0)
              }
            },
            reset() {
              ;(a.hasInit = !1),
                (a.isEmitInfo = !1),
                (a.offscreenCanvas = null),
                (a.offscreenCanvasCtx = null)
            },
          }),
        {
          init() {
            ;(C.lastBuf = null),
              (C.vps = null),
              (C.sps = null),
              (C.pps = null),
              (C.streamType = null),
              (C.localDts = 0),
              (C.isSendSeqHeader = !1)
          },
          destroy() {
            ;(C.lastBuf = null),
              (C.vps = null),
              (C.sps = null),
              (C.pps = null),
              (C.streamType = null),
              (C.localDts = 0),
              (C.isSendSeqHeader = !1)
          },
          dispatch(e) {
            e = new Uint8Array(e)
            C.extractNALu$2(e)
          },
          getNaluDts() {
            var e = C.localDts
            return (C.localDts = C.localDts + 40), e
          },
          getNaluAudioDts() {
            var e = F._opt.sampleRate,
              t = F._opt.audioBufferSize
            return C.localDts + parseInt((t / e) * 1e3)
          },
          extractNALu(e) {
            let t,
              r,
              n = 0,
              o = e.byteLength,
              a = 0,
              i = []
            for (; n < o; )
              switch (((t = e[n++]), a)) {
                case 0:
                  0 === t && (a = 1)
                  break
                case 1:
                  a = 0 === t ? 2 : 0
                  break
                case 2:
                case 3:
                  a =
                    0 === t
                      ? 3
                      : (1 === t && n < o && (r && i.push(e.subarray(r, n - a - 1)), (r = n)), 0)
              }
            return r && i.push(e.subarray(r, o)), i
          },
          extractNALu$2(t) {
            let a = null
            if (t && !(t.byteLength < 1)) {
              C.lastBuf
                ? ((a = new Uint8Array(t.byteLength + C.lastBuf.length)).set(C.lastBuf),
                  a.set(new Uint8Array(t), C.lastBuf.length))
                : (a = new Uint8Array(t))
              let r = 0,
                n = -1,
                o = -2
              const i = new Array()
              for (let t = 0; t < a.length; t += 2) {
                const e = a[t],
                  s = a[t + 1]
                0 == n && 0 == e && 0 == s
                  ? i.push(t - 1)
                  : 1 == s && 0 == e && 0 == n && 0 == o && i.push(t - 2),
                  (o = e),
                  (n = s)
              }
              if (1 < i.length)
                for (let t = 0; t < i.length - 1; ++t) {
                  const e = a.subarray(i[t], i[t + 1] + 1)
                  C.handleNALu(e), (r = i[t + 1])
                }
              else r = i[0]
              if (0 != r && r < a.length) C.lastBuf = a.subarray(r)
              else {
                C.lastBuf || (C.lastBuf = a)
                const e = new Uint8Array(C.lastBuf.length + t.byteLength)
                e.set(C.lastBuf), e.set(new Uint8Array(t), C.lastBuf.length), (C.lastBuf = e)
              }
            }
          },
          handleNALu(e) {
            e.byteLength <= 4
              ? F.debug.warn('worker', `handleNALu nalu byteLength is ${e.byteLength} <= 4`)
              : ((e = e.slice(4)), C.handleVideoNalu(e))
          },
          handleVideoNalu(e) {
            if (
              (C.streamType ||
                (C.streamType = (function (e) {
                  let t = null,
                    r = 31 & e[0]
                  return (
                    (t = r !== O && r !== G ? t : ie) ||
                      ((r = (126 & e[0]) >> 1) !== V && r !== z && r !== j) ||
                      (t = se),
                    t
                  )
                })(e)),
              C.streamType === ie)
            ) {
              const t = C.handleAddNaluStartCode(e),
                r = C.extractNALu(t)
              if (0 === r.length) F.debug.warn('worker', 'handleVideoNalu', 'naluList.length === 0')
              else {
                const n = []
                if (
                  (r.forEach(e => {
                    var t = Y(e)
                    t === G || t === O ? C.handleVideoH264Nalu(e) : ve(t) && n.push(e)
                  }),
                  1 === n.length)
                )
                  C.handleVideoH264Nalu(n[0])
                else {
                  const e = (function (t) {
                    if (0 === t.length) return !1
                    var r = Y(t[0])
                    for (let e = 1; e < t.length; e++) if (r !== Y(t[e])) return !1
                    return !0
                  })(n)
                  if (e) {
                    const e = Y(n[0]),
                      o = be(e)
                    C.handleVideoH264NaluList(n, o, e)
                  } else
                    n.forEach(e => {
                      C.handleVideoH264Nalu(e)
                    })
                }
              }
            } else
              C.streamType === se && (Te(e) === j ? C.extractH265PPS(e) : C.handleVideoH265Nalu(e))
          },
          extractH264PPS(e) {
            e = C.handleAddNaluStartCode(e)
            C.extractNALu(e).forEach(e => {
              we(Y(e)) ? C.extractH264SEI(e) : C.handleVideoH264Nalu(e)
            })
          },
          extractH265PPS(e) {
            e = C.handleAddNaluStartCode(e)
            C.extractNALu(e).forEach(e => {
              39 === Te(e) ? C.extractH265SEI(e) : C.handleVideoH265Nalu(e)
            })
          },
          extractH264SEI(e) {
            e = C.handleAddNaluStartCode(e)
            C.extractNALu(e).forEach(e => {
              C.handleVideoH264Nalu(e)
            })
          },
          extractH265SEI(e) {
            e = C.handleAddNaluStartCode(e)
            C.extractNALu(e).forEach(e => {
              C.handleVideoH265Nalu(e)
            })
          },
          handleAddNaluStartCode(e) {
            const t = [0, 0, 0, 1],
              r = new Uint8Array(e.length + t.length)
            return r.set(t), r.set(e, t.length), r
          },
          handleVideoH264Nalu(e) {
            var n,
              t,
              r,
              o = Y(e)
            switch (o) {
              case O:
                C.sps = e
                break
              case G:
                C.pps = e
            }
            if (C.isSendSeqHeader)
              ve(o)
                ? ((n = be(o)),
                  (t = C.getNaluDts()),
                  n && F.calcIframeIntervalTimestamp(t),
                  F.calcNetworkDelay(t),
                  (r = (function (e) {
                    let t = []
                    ;(t[0] = n ? 23 : 39),
                      (t[1] = 1),
                      (t[2] = 0),
                      (t[3] = 0),
                      (t[4] = 0),
                      (t[5] = (e.byteLength >> 24) & 255),
                      (t[6] = (e.byteLength >> 16) & 255),
                      (t[7] = (e.byteLength >> 8) & 255),
                      (t[8] = 255 & e.byteLength)
                    const r = new Uint8Array(t.length + e.byteLength)
                    return r.set(t, 0), r.set(e, t.length), r
                  })(e)),
                  F.decode(r, { type: 2, ts: t, isIFrame: n, cts: 0 }))
                : F.debug.warn('work', 'handleVideoH264Nalu Avc Seq Head is ' + o)
            else if (C.sps && C.pps) {
              C.isSendSeqHeader = !0
              const e = (function () {
                var { sps: e, pps: t } = { sps: C.sps, pps: C.pps }
                const r = [23, 0, 0, 0, 0, 1, 66, 0, 30, 255]
                return (
                  (r[0] = 23),
                  (r[6] = e[1]),
                  (r[7] = e[2]),
                  (r[8] = e[3]),
                  (r[10] = 225),
                  (r[11] = (e.byteLength >> 8) & 255),
                  (r[12] = 255 & e.byteLength),
                  r.push(...e, 1, (t.byteLength >> 8) & 255, 255 & t.byteLength, ...t),
                  new Uint8Array(r)
                )
              })()
              F.decode(e, { type: 2, ts: 0, isIFrame: !0, cts: 0 })
            }
          },
          handleVideoH264NaluList(e, n, t) {
            var r, o
            C.isSendSeqHeader
              ? ((r = C.getNaluDts()),
                F.calcNetworkDelay(r),
                (o = (function (e) {
                  let t = []
                  ;(t[0] = n ? 23 : 39), (t[1] = 1), (t[2] = 0), (t[3] = 0), (t[4] = 0)
                  const r = new Uint8Array(t.length + e.byteLength)
                  return r.set(t, 0), r.set(e, t.length), r
                })(
                  e.reduce((e, t) => {
                    const r = _e(e),
                      n = _e(t),
                      o = new Uint8Array(r.byteLength + n.byteLength)
                    return o.set(r, 0), o.set(n, r.byteLength), o
                  }),
                )),
                F.decode(o, { type: 2, ts: r, isIFrame: n, cts: 0 }),
                F.debug.log(
                  'worker',
                  `handleVideoH264NaluList list size is ${e.length} package length is ${o.byteLength} isIFrame is ${n},nalu type is ${t}, dts is ` +
                    r,
                ))
              : F.debug.warn('worker', 'handleVideoH264NaluList isSendSeqHeader is false')
          },
          handleVideoH265Nalu(e) {
            var n,
              t,
              r = Te(e)
            switch (r) {
              case V:
                C.vps = e
                break
              case z:
                C.sps = e
                break
              case j:
                C.pps = e
            }
            if (C.isSendSeqHeader)
              32 <= r && r <= 40
                ? F.debug.warn('work', 'handleVideoH265Nalu HevcSeqHead is ' + r)
                : ((n = 16 <= r && r <= 21),
                  (r = C.getNaluDts()),
                  F.calcNetworkDelay(r),
                  (t = (function (e) {
                    let t = []
                    ;(t[0] = n ? 28 : 44),
                      (t[1] = 1),
                      (t[2] = 0),
                      (t[3] = 0),
                      (t[4] = 0),
                      (t[5] = (e.byteLength >> 24) & 255),
                      (t[6] = (e.byteLength >> 16) & 255),
                      (t[7] = (e.byteLength >> 8) & 255),
                      (t[8] = 255 & e.byteLength)
                    const r = new Uint8Array(t.length + e.byteLength)
                    return r.set(t, 0), r.set(e, t.length), r
                  })(e)),
                  n && F.calcIframeIntervalTimestamp(r),
                  F.decode(t, { type: 2, ts: r, isIFrame: n, cts: 0 }))
            else if (C.vps && C.sps && C.pps) {
              C.isSendSeqHeader = !0
              const e = (function (e) {
                var { vps: e, pps: t, sps: r } = e,
                  n = { configurationVersion: 1 },
                  o = (e => {
                    let t = Ee(e),
                      r = new X(t)
                    return (
                      r.readByte(),
                      r.readByte(),
                      r.readBits(4),
                      r.readBits(2),
                      r.readBits(6),
                      { num_temporal_layers: r.readBits(3) + 1, temporal_id_nested: r.readBool() }
                    )
                  })(e),
                  a = (e => {
                    let t = Ee(e),
                      a = new X(t),
                      r = (a.readByte(), a.readByte(), 0),
                      n = 0,
                      o = 0,
                      i = 0
                    a.readBits(4)
                    var s = a.readBits(3)
                    a.readBool()
                    let l = a.readBits(2),
                      u = a.readBool(),
                      d = a.readBits(5),
                      c = a.readByte(),
                      f = a.readByte(),
                      p = a.readByte(),
                      h = a.readByte(),
                      m = a.readByte(),
                      g = a.readByte(),
                      y = a.readByte(),
                      I = a.readByte(),
                      M = a.readByte(),
                      $ = a.readByte(),
                      _ = a.readByte(),
                      w = [],
                      N = []
                    for (let e = 0; e < s; e++) w.push(a.readBool()), N.push(a.readBool())
                    if (0 < s) for (let e = s; e < 8; e++) a.readBits(2)
                    for (let e = 0; e < s; e++)
                      w[e] &&
                        (a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte(),
                        a.readByte()),
                        w[e] && a.readByte()
                    a.readUEG()
                    var v,
                      e = a.readUEG(),
                      O = (3 == e && a.readBits(1), a.readUEG()),
                      G = a.readUEG(),
                      b =
                        (a.readBool() &&
                          ((r += a.readUEG()),
                          (n += a.readUEG()),
                          (o += a.readUEG()),
                          (i += a.readUEG())),
                        a.readUEG()),
                      V = a.readUEG(),
                      z = a.readUEG()
                    for (let e = a.readBool() ? 0 : s; e <= s; e++)
                      a.readUEG(), a.readUEG(), a.readUEG()
                    if (
                      (a.readUEG(),
                      a.readUEG(),
                      a.readUEG(),
                      a.readUEG(),
                      a.readUEG(),
                      a.readUEG(),
                      a.readBool() && a.readBool())
                    )
                      for (let t = 0; t < 4; t++)
                        for (let e = 0; e < (3 === t ? 2 : 6); e++)
                          if (a.readBool()) {
                            var j = Math.min(64, 1 << (4 + (t << 1)))
                            1 < t && a.readSEG()
                            for (let e = 0; e < j; e++) a.readSEG()
                          } else a.readUEG()
                    a.readBool(),
                      a.readBool(),
                      a.readBool() && (a.readByte(), a.readUEG(), a.readUEG(), a.readBool())
                    let E = a.readUEG(),
                      k = 0
                    for (let t = 0; t < E; t++) {
                      let e = !1
                      if ((e = 0 !== t ? a.readBool() : e)) {
                        t === E && a.readUEG(), a.readBool(), a.readUEG()
                        let r = 0
                        for (let e = 0; e <= k; e++) {
                          let e = a.readBool(),
                            t = !1
                          e || (t = a.readBool()), (e || t) && r++
                        }
                        k = r
                      } else {
                        var T = a.readUEG(),
                          B = a.readUEG()
                        k = T + B
                        for (let e = 0; e < T; e++) a.readUEG(), a.readBool()
                        for (let e = 0; e < B; e++) a.readUEG(), a.readBool()
                      }
                    }
                    if (a.readBool()) {
                      var W = a.readUEG()
                      for (let e = 0; e < W; e++) {
                        for (let e = 0; e < z + 4; e++) a.readBits(1)
                        a.readBits(1)
                      }
                    }
                    let A = 0,
                      D = 1,
                      S = 1,
                      C = !1,
                      F = 1,
                      U = 1
                    if ((a.readBool(), a.readBool(), a.readBool())) {
                      if (
                        (a.readBool() &&
                          (0 < (v = a.readByte()) && v < 16
                            ? ((D = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][
                                v - 1
                              ]),
                              (S = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][
                                v - 1
                              ]))
                            : 255 === v && ((D = a.readBits(16)), (S = a.readBits(16)))),
                        a.readBool() && a.readBool(),
                        a.readBool() &&
                          (a.readBits(3),
                          a.readBool(),
                          a.readBool() && (a.readByte(), a.readByte(), a.readByte())),
                        a.readBool() && (a.readUEG(), a.readUEG()),
                        a.readBool(),
                        a.readBool(),
                        a.readBool(),
                        a.readBool() &&
                          ((r += a.readUEG()),
                          (n += a.readUEG()),
                          (o += a.readUEG()),
                          (i += a.readUEG())),
                        a.readBool() &&
                          ((F = a.readBits(32)),
                          (U = a.readBits(32)),
                          a.readBool() && (a.readUEG(), a.readBool())))
                      ) {
                        let r,
                          n,
                          o = !1
                        ;(r = a.readBool()),
                          (n = a.readBool()),
                          (r || n) &&
                            ((o = a.readBool()) &&
                              (a.readByte(), a.readBits(5), a.readBool(), a.readBits(5)),
                            a.readBits(4),
                            a.readBits(4),
                            o && a.readBits(4),
                            a.readBits(5),
                            a.readBits(5),
                            a.readBits(5))
                        for (let e = 0; e <= s; e++) {
                          var P = a.readBool()
                          C = P
                          let e = !1,
                            t = !1
                          if (
                            ((e = P ? e : a.readBool()) ? a.readSEG() : (t = a.readBool()),
                            t || (cpbcnt = a.readUEG() + 1),
                            r)
                          )
                            for (let e = 0; e < 1; e++)
                              a.readUEG(), a.readUEG(), o && (a.readUEG(), a.readUEG())
                          if (n)
                            for (let e = 0; e < 1; e++)
                              a.readUEG(), a.readUEG(), o && (a.readUEG(), a.readUEG())
                        }
                      }
                      a.readBool() &&
                        (a.readBool(),
                        a.readBool(),
                        a.readBool(),
                        (A = a.readUEG()),
                        a.readUEG(),
                        a.readUEG(),
                        a.readUEG(),
                        a.readUEG())
                    }
                    a.readBool()
                    let H = `hvc1.${d}.1.L${_}.B0`,
                      x = O,
                      L = G,
                      R = 1
                    return (
                      1 !== D && 1 !== S && (R = D / S),
                      a.destroy(),
                      (a = null),
                      {
                        codec_mimetype: H,
                        level_string: (_ / 30).toFixed(1),
                        profile_idc: d,
                        bit_depth: b + 8,
                        ref_frames: 1,
                        chroma_format: e,
                        chroma_format_string: ke(e),
                        general_level_idc: _,
                        general_profile_space: l,
                        general_tier_flag: u,
                        general_profile_idc: d,
                        general_profile_compatibility_flags_1: c,
                        general_profile_compatibility_flags_2: f,
                        general_profile_compatibility_flags_3: p,
                        general_profile_compatibility_flags_4: h,
                        general_constraint_indicator_flags_1: m,
                        general_constraint_indicator_flags_2: g,
                        general_constraint_indicator_flags_3: y,
                        general_constraint_indicator_flags_4: I,
                        general_constraint_indicator_flags_5: M,
                        general_constraint_indicator_flags_6: $,
                        min_spatial_segmentation_idc: A,
                        constant_frame_rate: 0,
                        chroma_format_idc: e,
                        bit_depth_luma_minus8: b,
                        bit_depth_chroma_minus8: V,
                        frame_rate: { fixed: C, fps: U / F, fps_den: F, fps_num: U },
                        sar_ratio: { width: D, height: S },
                        codec_size: { width: x, height: L },
                        present_size: { width: x * R, height: L },
                      }
                    )
                  })(r),
                  i = (e => {
                    let t = Ee(e),
                      r = new X(t),
                      n =
                        (r.readByte(),
                        r.readByte(),
                        r.readUEG(),
                        r.readUEG(),
                        r.readBool(),
                        r.readBool(),
                        r.readBits(3),
                        r.readBool(),
                        r.readBool(),
                        r.readUEG(),
                        r.readUEG(),
                        r.readSEG(),
                        r.readBool(),
                        r.readBool(),
                        r.readBool() && r.readUEG(),
                        r.readSEG(),
                        r.readSEG(),
                        r.readBool(),
                        r.readBool(),
                        r.readBool(),
                        r.readBool(),
                        r.readBool()),
                      o = r.readBool(),
                      a = 1
                    return o && n ? (a = 0) : o ? (a = 3) : n && (a = 2), { parallelismType: a }
                  })(t),
                  n = Object.assign(n, o, a, i)
                let s = 23 + (5 + e.byteLength) + (5 + r.byteLength) + (5 + t.byteLength),
                  l = new Uint8Array(s)
                ;(l[0] = 1),
                  (l[1] =
                    ((3 & n.general_profile_space) << 6) |
                    ((n.general_tier_flag ? 1 : 0) << 5) |
                    (31 & n.general_profile_idc)),
                  (l[2] = n.general_profile_compatibility_flags_1 || 0),
                  (l[3] = n.general_profile_compatibility_flags_2 || 0),
                  (l[4] = n.general_profile_compatibility_flags_3 || 0),
                  (l[5] = n.general_profile_compatibility_flags_4 || 0),
                  (l[6] = n.general_constraint_indicator_flags_1 || 0),
                  (l[7] = n.general_constraint_indicator_flags_2 || 0),
                  (l[8] = n.general_constraint_indicator_flags_3 || 0),
                  (l[9] = n.general_constraint_indicator_flags_4 || 0),
                  (l[10] = n.general_constraint_indicator_flags_5 || 0),
                  (l[11] = n.general_constraint_indicator_flags_6 || 0),
                  (l[12] = 60),
                  (l[13] = 240 | ((3840 & n.min_spatial_segmentation_idc) >> 8)),
                  (l[14] = 255 & n.min_spatial_segmentation_idc),
                  (l[15] = 252 | (3 & n.parallelismType)),
                  (l[16] = 252 | (3 & n.chroma_format_idc)),
                  (l[17] = 248 | (7 & n.bit_depth_luma_minus8)),
                  (l[18] = 248 | (7 & n.bit_depth_chroma_minus8)),
                  (l[19] = 0),
                  (l[20] = 0),
                  (l[21] =
                    ((3 & n.constant_frame_rate) << 6) |
                    ((7 & n.num_temporal_layers) << 3) |
                    ((n.temporal_id_nested ? 1 : 0) << 2) |
                    3),
                  (l[22] = 3),
                  (l[23] = 128 | V),
                  (l[24] = 0),
                  (l[25] = 1),
                  (l[26] = (65280 & e.byteLength) >> 8),
                  (l[27] = (255 & e.byteLength) >> 0),
                  l.set(e, 28),
                  (l[23 + (5 + e.byteLength) + 0] = 128 | z),
                  (l[23 + (5 + e.byteLength) + 1] = 0),
                  (l[23 + (5 + e.byteLength) + 2] = 1),
                  (l[23 + (5 + e.byteLength) + 3] = (65280 & r.byteLength) >> 8),
                  (l[23 + (5 + e.byteLength) + 4] = (255 & r.byteLength) >> 0),
                  l.set(r, 23 + (5 + e.byteLength) + 5),
                  (l[23 + (5 + e.byteLength + 5 + r.byteLength) + 0] = 128 | j),
                  (l[23 + (5 + e.byteLength + 5 + r.byteLength) + 1] = 0),
                  (l[23 + (5 + e.byteLength + 5 + r.byteLength) + 2] = 1),
                  (l[23 + (5 + e.byteLength + 5 + r.byteLength) + 3] = (65280 & t.byteLength) >> 8),
                  (l[23 + (5 + e.byteLength + 5 + r.byteLength) + 4] = (255 & t.byteLength) >> 0),
                  l.set(t, 23 + (5 + e.byteLength + 5 + r.byteLength) + 5)
                const u = [28, 0, 0, 0, 0],
                  d = new Uint8Array(u.length + l.byteLength)
                return d.set(u, 0), d.set(l, u.length), d
              })({ vps: C.vps, sps: C.sps, pps: C.pps })
              F.decode(e, { type: 2, ts: 0, isIFrame: !0, cts: 0 })
            }
          },
        }),
      F = {
        isPlayer: !0,
        isPlayback: !1,
        isPushDropping: !1,
        isDestroyed: !1,
        _opt: S(),
        startStreamRateAndStatsInterval: function () {
          F.stopStreamRateAndStatsInterval(),
            (e = setInterval(() => {
              s && s(0)
              var e = JSON.stringify({
                demuxBufferDelay: F.getVideoBufferLength(),
                audioDemuxBufferDelay: F.getAudioBufferLength(),
                flvBufferByteLength: F.getFlvBufferLength(),
                netBuf: F.networkDelay || 0,
                pushLatestDelay: F.pushLatestDelay || 0,
                isDropping: pe(F.dropping) || pe(F.isPushDropping),
                isStreamTsMoreThanLocal: g,
              })
              postMessage({ cmd: I, type: 'streamStats', value: e })
            }, 1e3))
        },
        stopStreamRateAndStatsInterval: function () {
          e && (clearInterval(e), (e = null))
        },
        useOffscreen: function () {
          return F._opt.useOffscreen && 'undefined' != typeof OffscreenCanvas
        },
        getDelay: function (e) {
          return !e || (F._opt.hasVideo && !m)
            ? -1
            : (F.preDelayTimestamp && F.preDelayTimestamp > e
                ? 1e3 < F.preDelayTimestamp - e &&
                  F.debug.warn(
                    'worker',
                    `getDelay() and preDelayTimestamp is ${
                      F.preDelayTimestamp
                    } > timestamp is ${e} more than ${F.preDelayTimestamp - e}ms`,
                  )
                : F.firstTimestamp
                ? e &&
                  ((t = Date.now() - F.startTimestamp),
                  (r = e - F.firstTimestamp) <= t
                    ? ((g = !1), (F.delay = t - r))
                    : ((g = !0), (F.delay = r - t)))
                : ((F.firstTimestamp = e), (F.startTimestamp = Date.now()), (F.delay = -1)),
              (F.preDelayTimestamp = e),
              F.delay)
          var t, r
        },
        getDelayNotUpdateDelay: function (t) {
          if (!t || (F._opt.hasVideo && !m)) return -1
          if (F.preDelayTimestamp && 1e3 < F.preDelayTimestamp - t)
            return (
              F.debug.warn(
                'worker',
                `getDelayNotUpdateDelay and preDelayTimestamp is ${
                  F.preDelayTimestamp
                } > timestamp is ${t} more than ${F.preDelayTimestamp - t}ms`,
              ),
              -1
            )
          if (F.firstTimestamp) {
            let e = -1
            var r
            return (
              t &&
                ((r = Date.now() - F.startTimestamp),
                (t = t - F.firstTimestamp),
                (e = t <= r ? ((g = !1), r - t) : ((g = !0), t - r))),
              e
            )
          }
          return -1
        },
        resetDelay: function () {
          ;(F.firstTimestamp = null), (F.startTimestamp = null), (F.delay = -1)
        },
        resetAllDelay: function () {
          F.resetDelay(), (F.preDelayTimestamp = null)
        },
        doDecode: function (e) {
          F._opt.useWCS && F.useOffscreen() && 2 === e.type && a.decode
            ? a.decode(e.payload, e.ts, e.cts)
            : e.decoder.decode(e.payload, e.ts, e.isIFrame, e.cts)
        },
        init: function () {
          F.debug.log('worker', 'init and opt is', F._opt)
          const t = F._opt.playType === x,
            r = 'playbackTF' === F._opt.playType
          if (
            (C.init(),
            (F.isPlayer = t),
            (F.isPlayback = r),
            F.isPlaybackCacheBeforeDecodeForFpsRender())
          )
            F.debug.log('worker', 'playback and playbackIsCacheBeforeDecodeForFpsRender is true')
          else {
            const r = () => {
              let e = null
              if (o.length)
                if (F.isPushDropping)
                  F.debug.warn(
                    'worker',
                    'loop() isPushDropping is true and bufferList length is ' +
                      this.bufferList.length,
                  )
                else if (F.dropping) {
                  for (
                    e = o.shift(),
                      F.debug.warn(
                        'worker',
                        `loop() dropBuffer is dropping and isIFrame ${e.isIFrame} and delay is ${F.delay} and bufferlist is ` +
                          o.length,
                      );
                    !e.isIFrame && o.length;

                  )
                    e = o.shift()
                  const t = F.getDelayNotUpdateDelay(e.ts)
                  e.isIFrame &&
                    t <= F.getNotDroppingDelayTs() &&
                    (F.debug.log('worker', 'loop() is dropping = false, is iFrame'),
                    (F.dropping = !1),
                    F.doDecode(e))
                } else if (((e = o[0]), -1 === F.getDelay(e.ts) || F.isPlayback))
                  F.isPlayer &&
                    F.debug.log('worker', 'loop() common dumex delay is -1 ,data.ts is', e.ts),
                    o.shift(),
                    F.doDecode(e)
                else if (F.delay > F._opt.videoBuffer + F._opt.videoBufferDelay && t)
                  F.hasIframeInBufferList()
                    ? (F.debug.log('worker', `delay is ${F.delay}, set dropping is true`),
                      F.resetAllDelay(),
                      (F.dropping = !0))
                    : (o.shift(), F.doDecode(e))
                else
                  for (; o.length; ) {
                    if (((e = o[0]), !(F.getDelay(e.ts) > F._opt.videoBuffer))) {
                      F.delay < 0 &&
                        F.debug.warn(
                          'worker',
                          `loop() do not decode and delay is ${F.delay}, bufferList is ` + o.length,
                        )
                      break
                    }
                    o.shift(), F.doDecode(e)
                  }
              else
                -1 !== F.delay &&
                  F.debug.log('worker', 'loop() bufferList is empty and reset delay'),
                  F.resetAllDelay()
            }
            F.stopId = setInterval(() => {
              var e = new Date().getTime(),
                e = e - (y = y || e)
              100 < e && F.debug.warn('worker', 'loop demux diff time is ' + e),
                r(),
                (y = new Date().getTime())
            }, 10)
          }
          F._opt.checkFirstIFrame || (m = !0)
        },
        playbackCacheLoop: function () {
          F.stopId && (clearInterval(F.stopId), (F.stopId = null))
          var e = () => {
              var e
              o.length && ((e = o.shift()), F.doDecode(e))
            },
            t = (e(), Math.ceil(1e3 / (F.streamFps * F._opt.playbackRate)))
          F.debug.log(
            'worker',
            `playbackCacheLoop fragDuration is ${t}, streamFps is ${F.streamFps}, playbackRate is ` +
              F._opt.playbackRate,
          ),
            (F.stopId = setInterval(e, t))
        },
        close: function () {
          F.debug.log('worker', 'close'),
            (F.isDestroyed = !0),
            F.stopStreamRateAndStatsInterval(),
            F.stopId && (clearInterval(F.stopId), (F.stopId = null)),
            U && (U.clear && U.clear(), (U = null)),
            P && (P.clear && P.clear(), (P = null)),
            (s = null),
            (y = null),
            (g = !1),
            a && (a.reset && a.reset(), (a = null)),
            (F.firstTimestamp = null),
            (F.startTimestamp = null),
            (F.networkDelay = 0),
            (F.streamFps = null),
            (F.streamAudioFps = null),
            (F.streamVideoFps = null),
            (F.delay = -1),
            (F.pushLatestDelay = -1),
            (F.preDelayTimestamp = null),
            (F.dropping = !1),
            (F.isPushDropping = !1),
            (F.isPlayer = !0),
            (F.isPlayback = !1),
            (F._opt = S()),
            F.webglObj &&
              (F.webglObj.destroy(),
              F.offscreenCanvas.removeEventListener(
                'webglcontextlost',
                F.onOffscreenCanvasWebglContextLost,
              ),
              F.offscreenCanvas.removeEventListener(
                'webglcontextrestored',
                F.onOffscreenCanvasWebglContextRestored,
              ),
              (F.offscreenCanvas = null),
              (F.offscreenCanvasGL = null),
              (F.offscreenCanvasCtx = null)),
            (o = []),
            (u = []),
            n(),
            (d = null),
            i && (i.close(1e3, 'Client disconnecting'), (i = null)),
            (c = null),
            (f = null),
            (p = !1),
            (h = !1),
            (m = !1),
            (A = !1),
            (D = !1),
            (v = []),
            (b = 0),
            (E = 0),
            (_ = null),
            (w = null),
            (t = null),
            (k = null),
            (T = 0),
            (B = 0),
            C.destroy(),
            postMessage({ cmd: 'closeEnd' })
        },
        pushBuffer: function (e, t) {
          if (1 === t.type && ue(e)) F.decodeAudio(e, t.ts)
          else {
            if (F.isPlayer && 0 < T && 0 < k && 2 === t.type) {
              const e = t.ts - k
              e > 2 * T - 5 &&
                F.debug.warn(
                  'worker',
                  `pushBuffer video
                    ts is ${t.ts}, preTimestamp is ${k},
                    diff is ${e} and preTimestampDuration is ${T}
                    maybe trigger black screen or flower screen
                    `,
                )
            }
            if (
              (F.isPlayer &&
                0 < k &&
                2 === t.type &&
                t.ts < k &&
                36e5 < k - t.ts &&
                (F.debug.warn(
                  'worker',
                  `pushBuffer,
                preTimestamp is ${k}, options.ts is ${t.ts},
                diff is ${k - t.ts} more than 3600000,
                and resetAllDelay`,
                ),
                F.resetAllDelay()),
              F.isPlayer &&
                t.ts <= k &&
                0 < k &&
                2 === t.type &&
                F.debug.warn(
                  'worker',
                  `pushBuffer,
                options.ts is ${t.ts} less than (or equal) preTimestamp is ${k} and
                payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ` + B,
                ),
              F.isPlayer && m)
            ) {
              const e = F._opt.videoBuffer + F._opt.videoBufferDelay,
                o = F.getDelayNotUpdateDelay(t.ts)
              ;(F.pushLatestDelay = o) > e &&
                F.delay < e &&
                0 < F.delay &&
                F.hasIframeInBufferList() &&
                !1 === F.isPushDropping &&
                (F.debug.log(
                  'worker',
                  `pushBuffer, pushLatestDelay is ${o} more than ${e} and decoder.delay is ${F.delay} and has iIframe and next decoder.dropBuffer$2()`,
                ),
                F.dropBuffer$2())
            }
            if (
              (2 === t.type && (0 < k && (T = t.ts - k), (B = e.byteLength), (k = t.ts)),
              1 === t.type
                ? o.push({
                    ts: t.ts,
                    payload: e,
                    decoder: { decode: F.decodeAudio },
                    type: 1,
                    isIFrame: !1,
                  })
                : 2 === t.type &&
                  o.push({
                    ts: t.ts,
                    cts: t.cts,
                    payload: e,
                    decoder: { decode: F.decodeVideo },
                    type: 2,
                    isIFrame: t.isIFrame,
                  }),
              F.isPlaybackCacheBeforeDecodeForFpsRender() &&
                (H(F.streamVideoFps) || H(F.streamAudioFps)))
            ) {
              let e = F.streamVideoFps,
                t = F.streamAudioFps
              H(F.streamVideoFps) &&
                (e = fe(o, 2)) &&
                ((F.streamVideoFps = e),
                postMessage({ cmd: 'playbackStreamVideoFps', value: F.streamVideoFps }),
                (F.streamFps = t ? e + t : e),
                F.playbackCacheLoop()),
                H(F.streamAudioFps) &&
                  (t = fe(o, 1)) &&
                  ((F.streamAudioFps = t), (F.streamFps = e ? e + t : t), F.playbackCacheLoop()),
                H(F.streamVideoFps) &&
                  H(F.streamAudioFps) &&
                  F.debug.log(
                    'worker',
                    `playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength  is ` +
                      o.length,
                  )
            }
          }
        },
        getVideoBufferLength() {
          let t = 0
          return (
            o.forEach(e => {
              2 === e.type && (t += 1)
            }),
            t
          )
        },
        hasIframeInBufferList: () => o.some(e => 2 === e.type && e.isIFrame),
        getNotDroppingDelayTs: () => F._opt.videoBuffer + F._opt.videoBufferDelay / 2,
        getAudioBufferLength() {
          let t = 0
          return (
            o.forEach(e => {
              1 === e.type && (t += 1)
            }),
            t
          )
        },
        getFlvBufferLength() {
          let e = 0
          return (
            d && d.buffer && (e = d.buffer.byteLength),
            (e = F._opt.isNakedFlow && C.lastBuf ? C.lastBuf.byteLength : e)
          )
        },
        fetchStream: function (e, t) {
          F.debug.log('worker', 'fetchStream, url is ' + e, 'options:', JSON.stringify(t)),
            (s = (function (r) {
              let n = 0,
                o = ce()
              return e => {
                var t
                '[object Number]' === Object.prototype.toString.call(e) &&
                  ((n += e), 1e3 <= (t = (e = ce()) - o) && (r((n / t) * 1e3), (o = e), (n = 0)))
              }
            })(e => {
              postMessage({ cmd: I, type: 'streamRate', value: e })
            })),
            F.startStreamRateAndStatsInterval(),
            2 === t.protocol
              ? ((d = new q(F.demuxFlv())),
                fetch(e, { signal: r.signal })
                  .then(e => {
                    if (!(e.ok && 200 <= e.status && e.status <= 299))
                      return (
                        F.debug.warn(
                          'worker',
                          `fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`,
                        ),
                        n(),
                        void postMessage({
                          cmd: I,
                          type: $,
                          value: `fetch response status is ${e.status} and ok is ` + e.ok,
                        })
                      )
                    if ((postMessage({ cmd: I, type: ae }), 'undefined' != typeof WritableStream))
                      e.body.pipeTo(
                        new WritableStream({
                          write: e => {
                            s(e.byteLength), d.write(e)
                          },
                          close: () => {
                            ;(d = null), n(), postMessage({ cmd: I, type: M, value: Z })
                          },
                          abort: e => {
                            ;(d = null),
                              e.name !== W &&
                                (n(), postMessage({ cmd: I, type: $, value: e.toString() }))
                          },
                        }),
                      )
                    else {
                      const t = e.body.getReader(),
                        r = () => {
                          t.read()
                            .then(e => {
                              var { done: e, value: t } = e
                              if (e)
                                return (
                                  (d = null), n(), void postMessage({ cmd: I, type: M, value: Z })
                                )
                              s(t.byteLength), d.write(t), r()
                            })
                            .catch(e => {
                              ;(d = null),
                                e.name !== W &&
                                  (n(), postMessage({ cmd: I, type: $, value: e.toString() }))
                            })
                        }
                      r()
                    }
                  })
                  .catch(e => {
                    e.name !== W &&
                      (n(), postMessage({ cmd: I, type: $, value: e.toString() }), (d = null))
                  }))
              : 1 === t.protocol &&
                (t.isFlv && (d = new q(F.demuxFlv())),
                ((i = new WebSocket(e)).binaryType = 'arraybuffer'),
                (i.onopen = () => {
                  F.debug.log('worker', 'fetchStream, WebsocketStream  socket open'),
                    postMessage({ cmd: I, type: ae }),
                    postMessage({ cmd: I, type: 'websocketOpen' })
                }),
                (i.onclose = e => {
                  F.debug.log(
                    'worker',
                    'fetchStream, WebsocketStream socket close and code is ' + e.code,
                  ),
                    1006 === e.code &&
                      F.debug.warn(
                        'worker',
                        'fetchStream, WebsocketStream socket close abnormally and code is ' +
                          e.code,
                      ),
                    (d = null),
                    postMessage({ cmd: I, type: M, value: 'websocket' })
                }),
                (i.onerror = e => {
                  F.debug.error('worker', 'fetchStream, WebsocketStream socket error', e),
                    (d = null),
                    postMessage({
                      cmd: I,
                      type: 'websocketError',
                      value: e.isTrusted ? 'websocket user aborted' : 'websocket error',
                    })
                }),
                (i.onmessage = e => {
                  s(e.data.byteLength),
                    t.isFlv
                      ? d.write(e.data)
                      : F._opt.isNakedFlow
                      ? F.demuxNakedFlow(e.data)
                      : F.demuxM7s(e.data)
                }))
        },
        demuxFlv: function* () {
          yield 9
          const r = new ArrayBuffer(4),
            e = new Uint8Array(r),
            n = new Uint32Array(r)
          for (;;) {
            e[3] = 0
            const r = yield 15,
              i = r[4]
            ;(e[0] = r[7]), (e[1] = r[6]), (e[2] = r[5])
            var t = n[0],
              o = ((e[0] = r[10]), (e[1] = r[9]), (e[2] = r[8]), (e[3] = r[11]), n[0]),
              a = (yield t).slice()
            switch (i) {
              case 8:
                F.decode(a, { type: 1, ts: o })
                break
              case 9:
                if (0 < a.byteLength) {
                  const r = a[0] >> 4 == 1
                  F.isPlayer && (F.calcNetworkDelay(o), r && F.calcIframeIntervalTimestamp(o)),
                    (n[0] = a[4]),
                    (n[1] = a[3]),
                    (n[2] = a[2]),
                    (n[3] = 0)
                  let e = n[0],
                    t = a
                  F._opt.isCrypto &&
                    (F._opt.cryptoIV &&
                    0 < F._opt.cryptoIV.byteLength &&
                    F._opt.cryptoKey &&
                    0 < F._opt.cryptoKey.byteLength
                      ? (t = (function (t, r, n) {
                          ;(r = new Uint8Array(r)), (n = new Uint8Array(n))
                          const o = t.byteLength
                          let a = 5
                          for (; a < o; ) {
                            s =
                              (s = t.slice(a, a + 4))[3] | (s[2] << 8) | (s[1] << 16) | (s[0] << 24)
                            if (s > o) break
                            var i = t[a + 4]
                            if (1 == (i &= 31) || 5 == i) {
                              const o = t.slice(a + 4 + 2, a + 4 + s)
                              let e = new ze.ModeOfOperation.ctr(r, new ze.Counter(n))
                              i = e.decrypt(o)
                              ;(e = null), t.set(i, a + 4 + 2)
                            }
                            a = a + 4 + s
                          }
                          var s
                          return t
                        })(a, F._opt.cryptoKey, F._opt.cryptoIV))
                      : F.debug.error(
                          'worker',
                          `cryptoKey.length is ${
                            F._opt.cryptoKey && F._opt.cryptoKey.byteLength
                          } or cryptoIV.length is ${
                            F._opt.cryptoIV && F._opt.cryptoIV.byteLength
                          } null`,
                        )),
                    F.decode(t, { type: 2, ts: o, isIFrame: r, cts: e })
                }
                break
              default:
                F.debug.log('worker', 'demuxFlv() type is ' + i)
            }
          }
        },
        decode: function (e, t) {
          1 === t.type
            ? F._opt.hasAudio &&
              (postMessage({ cmd: I, type: 'streamAbps', value: e.byteLength }),
              F.isPlayer
                ? F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts })
                : F.isPlayback &&
                  (F.isPlaybackCacheBeforeDecodeForFpsRender() || 1 === F._opt.playbackRate
                    ? F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts })
                    : F.decodeAudio(e, t.ts)))
            : 2 === t.type &&
              F._opt.hasVideo &&
              (postMessage({ cmd: I, type: 'streamVbps', value: e.byteLength }),
              postMessage({ cmd: I, type: 'streamDts', value: t.ts }),
              F.isPlayer
                ? F.pushBuffer(e, { type: t.type, ts: t.ts, isIFrame: t.isIFrame, cts: t.cts })
                : F.isPlayback &&
                  (F.isPlaybackOnlyDecodeIFrame()
                    ? t.isIFrame &&
                      F.pushBuffer(e, { type: t.type, ts: t.ts, cts: t.cts, isIFrame: t.isIFrame })
                    : (F.isPlaybackCacheBeforeDecodeForFpsRender(),
                      F.pushBuffer(e, {
                        type: t.type,
                        ts: t.ts,
                        cts: t.cts,
                        isIFrame: t.isIFrame,
                      }))))
        },
        setCodecAudio: function (e) {
          var t = e[0] >> 4
          if (ue(e) || 7 == t || 8 == t) {
            F.debug.log('worker', 'setCodecAudio: init audio codec, codeId is ' + t)
            e = t === N ? e.slice(2) : e.slice(1)
            U.setCodec(t, F._opt.sampleRate, e), (h = !0)
            {
              const e = Number('1') || 1
              setTimeout(() => {
                F.close(), postMessage({ cmd: oe })
              }, 60 * e * 60 * 1e3)
            }
          } else F.debug.warn('worker', 'setCodecAudio: hasInitAudioCodec is false, codecId is ', t)
        },
        decodeAudio: function (e, t) {
          var r = e[0] >> 4
          h ? U.decode(r === N ? e.slice(2) : e.slice(1), t) : F.setCodecAudio(e)
        },
        setCodecVideo: function (e) {
          var t = 15 & e[0]
          if (F.isVideoSequenceHeader(e))
            if (7 == t || 12 == t) {
              F.debug.log('worker', 'setCodecVideo: init video codec , codecId is ' + t)
              var r = e.slice(5)
              if (7 == t && F._opt.useSIMD) {
                const e = ye(r)
                if (4080 < e.codecWidth || 4080 < e.codecHeight)
                  return (
                    postMessage({ cmd: 'simdH264DecodeVideoWidthIsTooLarge' }),
                    void F.debug.warn(
                      'worker',
                      `setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ` +
                        e.codecHeight,
                    )
                  )
              }
              ;(p = !0),
                P.setCodec(t, r),
                F._opt.recordType === L &&
                  postMessage({ cmd: ne, buffer: e, codecId: t }, [e.buffer])
            } else
              F.debug.warn(
                'worker',
                `setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`,
              )
          else
            F.debug.warn(
              'worker',
              `decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${
                e[0] >> 4
              } and packetType is ` + e[1],
            )
        },
        decodeVideo: function (t, r, e, n) {
          if (p)
            if ((m = !m && e ? !0 : m)) {
              if (e && F.isVideoSequenceHeader(t)) {
                const r = 15 & t[0]
                let e = {}
                7 == r
                  ? (e = ye(t.slice(5)))
                  : 12 == r &&
                    (e = (function (e) {
                      let o = { width: 0, height: 0, profile: 0, level: 0 }
                      e = e.slice(5)
                      do {
                        let t = {}
                        if (e.length < 23) break
                        if (((t.configurationVersion = e[0]), 1 != t.configurationVersion)) break
                        ;(t.general_profile_space = (e[1] >> 6) & 3),
                          (t.general_tier_flag = (e[1] >> 5) & 1),
                          (t.general_profile_idc = 31 & e[1]),
                          (t.general_profile_compatibility_flags =
                            (e[2] << 24) | (e[3] << 16) | (e[4] << 8) | e[5]),
                          (t.general_constraint_indicator_flags =
                            (e[6] << 24) | (e[7] << 16) | (e[8] << 8) | e[9]),
                          (t.general_constraint_indicator_flags =
                            (t.general_constraint_indicator_flags << 16) | (e[10] << 8) | e[11]),
                          (t.general_level_idc = e[12]),
                          (t.min_spatial_segmentation_idc = ((15 & e[13]) << 8) | e[14]),
                          (t.parallelismType = 3 & e[15]),
                          (t.chromaFormat = 3 & e[16]),
                          (t.bitDepthLumaMinus8 = 7 & e[17]),
                          (t.bitDepthChromaMinus8 = 7 & e[18]),
                          (t.avgFrameRate = (e[19] << 8) | e[20]),
                          (t.constantFrameRate = (e[21] >> 6) & 3),
                          (t.numTemporalLayers = (e[21] >> 3) & 7),
                          (t.temporalIdNested = (e[21] >> 2) & 1),
                          (t.lengthSizeMinusOne = 3 & e[21])
                        let r = e[22],
                          n = e.slice(23)
                        for (let e = 0; e < r && !(n.length < 3); e++) {
                          var a = 63 & n[0],
                            i = (n[1] << 8) | n[2]
                          n = n.slice(3)
                          for (let e = 0; e < i && !(n.length < 2); e++) {
                            var s = (n[0] << 8) | n[1]
                            if (n.length < 2 + s) break
                            if (((n = n.slice(2)), 33 == a)) {
                              let e = new Uint8Array(s)
                              e.set(n.slice(0, s), 0),
                                (t.psps = (function (e) {
                                  let t = {},
                                    r = e.length,
                                    n = [],
                                    o = new ge(e)
                                  o.read(1), o.read(6), o.read(6), o.read(3)
                                  for (let e = 2; e < r; e++)
                                    e + 2 < r && 3 == o.look(24)
                                      ? (n.push(o.read(8)), n.push(o.read(8)), (e += 2), o.read(8))
                                      : n.push(o.read(8))
                                  let a = new Uint8Array(n),
                                    i = new ge(a)
                                  var s
                                  return (
                                    (t.sps_video_parameter_set_id = i.read(4)),
                                    (t.sps_max_sub_layers_minus1 = i.read(3)),
                                    (t.sps_temporal_id_nesting_flag = i.read(1)),
                                    (t.profile_tier_level = (function (t, r) {
                                      let n = {}
                                      ;(n.profile_space = t.read(2)),
                                        (n.tier_flag = t.read(1)),
                                        (n.profile_idc = t.read(5)),
                                        (n.profile_compatibility_flags = t.read(32)),
                                        (n.general_progressive_source_flag = t.read(1)),
                                        (n.general_interlaced_source_flag = t.read(1)),
                                        (n.general_non_packed_constraint_flag = t.read(1)),
                                        (n.general_frame_only_constraint_flag = t.read(1)),
                                        t.read(32),
                                        t.read(12),
                                        (n.level_idc = t.read(8)),
                                        (n.sub_layer_profile_present_flag = []),
                                        (n.sub_layer_level_present_flag = [])
                                      for (let e = 0; e < r; e++)
                                        (n.sub_layer_profile_present_flag[e] = t.read(1)),
                                          (n.sub_layer_level_present_flag[e] = t.read(1))
                                      if (0 < r) for (let e = r; e < 8; e++) t.read(2)
                                      ;(n.sub_layer_profile_space = []),
                                        (n.sub_layer_tier_flag = []),
                                        (n.sub_layer_profile_idc = []),
                                        (n.sub_layer_profile_compatibility_flag = []),
                                        (n.sub_layer_progressive_source_flag = []),
                                        (n.sub_layer_interlaced_source_flag = []),
                                        (n.sub_layer_non_packed_constraint_flag = []),
                                        (n.sub_layer_frame_only_constraint_flag = []),
                                        (n.sub_layer_level_idc = [])
                                      for (let e = 0; e < r; e++)
                                        n.sub_layer_profile_present_flag[e] &&
                                          ((n.sub_layer_profile_space[e] = t.read(2)),
                                          (n.sub_layer_tier_flag[e] = t.read(1)),
                                          (n.sub_layer_profile_idc[e] = t.read(5)),
                                          (n.sub_layer_profile_compatibility_flag[e] = t.read(32)),
                                          (n.sub_layer_progressive_source_flag[e] = t.read(1)),
                                          (n.sub_layer_interlaced_source_flag[e] = t.read(1)),
                                          (n.sub_layer_non_packed_constraint_flag[e] = t.read(1)),
                                          (n.sub_layer_frame_only_constraint_flag[e] = t.read(1)),
                                          t.read(32),
                                          t.read(12)),
                                          n.sub_layer_level_present_flag[e]
                                            ? (n.sub_layer_level_idc[e] = t.read(8))
                                            : (n.sub_layer_level_idc[e] = 1)
                                      return n
                                    })(i, t.sps_max_sub_layers_minus1)),
                                    (t.sps_seq_parameter_set_id = i.read_golomb()),
                                    (t.chroma_format_idc = i.read_golomb()),
                                    3 == t.chroma_format_idc
                                      ? (t.separate_colour_plane_flag = i.read(1))
                                      : (t.separate_colour_plane_flag = 0),
                                    (t.pic_width_in_luma_samples = i.read_golomb()),
                                    (t.pic_height_in_luma_samples = i.read_golomb()),
                                    (t.conformance_window_flag = i.read(1)),
                                    t.conformance_window_flag
                                      ? ((e = 1 + (t.chroma_format_idc < 2)),
                                        (s = 1 + (t.chroma_format_idc < 3)),
                                        (t.conf_win_left_offset = i.read_golomb() * s),
                                        (t.conf_win_right_offset = i.read_golomb() * s),
                                        (t.conf_win_top_offset = i.read_golomb() * e),
                                        (t.conf_win_bottom_offset = i.read_golomb() * e))
                                      : ((t.conf_win_left_offset = 0),
                                        (t.conf_win_right_offset = 0),
                                        (t.conf_win_top_offset = 0),
                                        (t.conf_win_bottom_offset = 0)),
                                    t
                                  )
                                })(e)),
                                (o.profile = t.general_profile_idc),
                                (o.level = t.general_level_idc / 30),
                                (o.width =
                                  t.psps.pic_width_in_luma_samples -
                                  (t.psps.conf_win_left_offset + t.psps.conf_win_right_offset)),
                                (o.height =
                                  t.psps.pic_height_in_luma_samples -
                                  (t.psps.conf_win_top_offset + t.psps.conf_win_bottom_offset))
                            }
                            n = n.slice(s)
                          }
                        }
                      } while (0)
                      return (
                        (o.codecWidth = o.width || 1920),
                        (o.codecHeight = o.height || 1080),
                        (o.presentHeight = o.codecHeight),
                        (o.presentWidth = o.codecWidth),
                        (o.timescale = 1e3),
                        (o.refSampleDuration = (1e3 / 23976) * 1e3),
                        (o.videoType = 'hevc'),
                        o
                      )
                    })(t)),
                  e.codecWidth &&
                    e.codecHeight &&
                    c &&
                    f &&
                    (e.codecWidth !== c || e.codecHeight !== f) &&
                    (F.debug.warn(
                      'worker',
                      `
                            decodeVideo: video width or height is changed,
                            old width is ${c}, old height is ${f},
                            new width is ${e.codecWidth}, new height is ${e.codecHeight},
                            and emit change event`,
                    ),
                    (D = !0),
                    postMessage({ cmd: 'wasmWidthOrHeightChange' }))
              }
              var o
              D
                ? F.debug.warn(
                    'worker',
                    'decodeVideo: video width or height is changed, and return',
                  )
                : F.isVideoSequenceHeader(t)
                ? F.debug.warn(
                    'worker',
                    'decodeVideo and payload is video sequence header so drop this frame',
                  )
                : t.byteLength < 12
                ? F.debug.warn(
                    'worker',
                    'decodeVideo and payload is too small , payload length is ' + t.byteLength,
                  )
                : ((o = t.slice(5)),
                  P.decode(o, e ? 1 : 0, r),
                  F._opt.isRecording &&
                    F._opt.recordType === L &&
                    postMessage({ cmd: 'videoNalu', buffer: o, isIFrame: e, ts: r, cts: n }, [
                      t.buffer,
                    ]))
            } else F.debug.warn('worker', 'decodeVideo: first frame is not iframe')
          else F.setCodecVideo(t)
        },
        clearBuffer: function () {
          var e = 0 < arguments.length && void 0 !== arguments[0] && arguments[0]
          F.debug.log('worker', `clearBuffer,bufferList length is ${o.length}, need clear is ` + e),
            e && (o = []),
            F.resetAllDelay(),
            (F.dropping = !0)
        },
        dropBuffer$2: function () {
          var e, t, r
          0 < o.length &&
            ((F.isPushDropping = !0),
            0 <= (e = o.findIndex(e => pe(e.isIFrame) && 2 === e.type))
              ? ((t = (o = o.slice(e)).shift()),
                (r = F.getDelayNotUpdateDelay(t.ts)),
                F.doDecode(t),
                (F.isPushDropping = !1),
                F.debug.log(
                  'worker',
                  `dropBuffer$2() iFrameIndex is ${e},and bufferList length is ${o.length} and tempDelay is ${r} ,delay is ${F.delay} `,
                ))
              : (F.isPushDropping = !1)),
            0 === o.length && (F.isPushDropping = !1)
        },
        demuxM7s: function (e) {
          const t = new DataView(e),
            r = t.getUint32(1, !1)
          switch (t.getUint8(0)) {
            case 1:
              F.decode(new Uint8Array(e, 5), { type: 1, ts: r })
              break
            case 2:
              var n
              5 < t.byteLength &&
                ((n = t.getUint8(5) >> 4 == 1),
                F.isPlayer && (F.calcNetworkDelay(r), n && F.calcIframeIntervalTimestamp(r)),
                F.decode(new Uint8Array(e, 5), { type: 2, ts: r, isIFrame: n }))
          }
        },
        demuxNakedFlow: function (e) {
          C.dispatch(e)
        },
        calcNetworkDelay: function (e) {
          var t, r, n
          m &&
            0 < e &&
            (null === _
              ? ((_ = e), (w = de()))
              : e < _ &&
                (F.debug.warn(
                  'worker',
                  `calcNetworkDelay, dts is ${e} less than bufferStartDts is ` + _,
                ),
                (_ = e),
                (w = de())),
            (n = (t = e - _) < (r = de() - w) ? r - t : 0),
            (F.networkDelay = n) > F._opt.networkDelay &&
              F._opt.playType === x &&
              (F.debug.warn(
                'worker',
                `calcNetworkDelay now dts:${e}, start dts is ${_} vs start is ${t},local diff is ${r} ,delay is ` +
                  n,
              ),
              postMessage({ cmd: I, type: 'networkDelayTimeout', value: n })))
        },
        calcIframeIntervalTimestamp: function (e) {
          null === t
            ? (t = e)
            : t < e && (postMessage({ cmd: 'iframeIntervalTs', value: e - t }), (t = e))
        },
        canVisibilityDecodeNotDrop: function () {
          return F._opt.visibility && c * f <= 2073600
        },
        isPlaybackCacheBeforeDecodeForFpsRender: function () {
          return !F.isPlayer && F._opt.playbackIsCacheBeforeDecodeForFpsRender
        },
        isPlaybackOnlyDecodeIFrame: function () {
          return F._opt.playbackRate >= F._opt.playbackForwardMaxRateDecodeIFrame
        },
        playbackUpdatePlaybackRate: function () {
          F.clearBuffer(!0)
        },
        isVideoSequenceHeader: function (e) {
          return e[0] >> 4 == 1 && e[1] === le
        },
        onOffscreenCanvasWebglContextLost: function (e) {
          F.debug.error(
            'worker',
            'handleOffscreenCanvasWebglContextLost and next try to create webgl',
          ),
            e.preventDefault(),
            (A = !0),
            F.webglObj.destroy(),
            (F.webglObj = null),
            (F.offscreenCanvasGL = null),
            setTimeout(() => {
              ;(F.offscreenCanvasGL = F.offscreenCanvas.getContext('webgl')),
                F.offscreenCanvasGL && F.offscreenCanvasGL.getContextAttributes().stencil
                  ? ((F.webglObj = J(F.offscreenCanvasGL, F._opt.openWebglAlignment)), (A = !1))
                  : F.debug.error(
                      'worker',
                      'handleOffscreenCanvasWebglContextLost, stencil is false',
                    )
            }, 500)
        },
        onOffscreenCanvasWebglContextRestored: function (e) {
          F.debug.log('worker', 'handleOffscreenCanvasWebglContextRestored'), e.preventDefault()
        },
        videoInfo: function (e, t, r) {
          postMessage({ cmd: re, code: e }),
            postMessage({ cmd: ee, w: t, h: r }),
            (c = t),
            (f = r),
            F.useOffscreen() &&
              ((F.offscreenCanvas = new OffscreenCanvas(t, r)),
              (F.offscreenCanvasGL = F.offscreenCanvas.getContext('webgl')),
              (F.webglObj = J(F.offscreenCanvasGL, F._opt.openWebglAlignment)),
              F.offscreenCanvas.addEventListener(
                'webglcontextlost',
                F.onOffscreenCanvasWebglContextLost,
                !1,
              ),
              F.offscreenCanvas.addEventListener(
                'webglcontextrestored',
                F.onOffscreenCanvasWebglContextRestored,
                !1,
              ))
        },
        audioInfo: function (e, t, r) {
          postMessage({ cmd: 'audioCode', code: e }),
            postMessage({ cmd: 'initAudio', sampleRate: t, channels: r }),
            (E = r)
        },
        yuvData: function (e, t) {
          if (F.isDestroyed) F.debug.log('worker', 'yuvData, decoder is destroyed and return')
          else {
            var r,
              n = (c * f * 3) / 2,
              e = l.HEAPU8.subarray(e, e + n),
              n = new Uint8Array(e)
            if (F.useOffscreen())
              try {
                A ||
                  (F.webglObj.renderYUV(c, f, n),
                  (r = F.offscreenCanvas.transferToImageBitmap()),
                  postMessage({ cmd: R, buffer: r, delay: F.delay, ts: t }, [r]))
              } catch (e) {
                F.debug.error('worker', 'yuvData, transferToImageBitmap error is', e)
              }
            else postMessage({ cmd: R, output: n, delay: F.delay, ts: t }, [n.buffer])
          }
        },
        pcmData: function (o, a, i) {
          if (F.isDestroyed) F.debug.log('worker', 'pcmData, decoder is destroyed and return')
          else {
            let t = a,
              r = [],
              e = 0,
              n = F._opt.audioBufferSize
            for (let e = 0; e < 2; e++) {
              var s = l.HEAPU32[(o >> 2) + e] >> 2
              r[e] = l.HEAPF32.subarray(s, s + t)
            }
            if (b) {
              if (!(t >= (a = n - b)))
                return (
                  (b += t),
                  (u[0] = Float32Array.of(...u[0], ...r[0])),
                  void (2 == E && (u[1] = Float32Array.of(...u[1], ...r[1])))
                )
              ;(v[0] = Float32Array.of(...u[0], ...r[0].subarray(0, a))),
                2 == E && (v[1] = Float32Array.of(...u[1], ...r[1].subarray(0, a))),
                postMessage(
                  { cmd: te, buffer: v, ts: i },
                  v.map(e => e.buffer),
                ),
                (e = a),
                (t -= a)
            }
            for (b = t; b >= n; b -= n)
              (v[0] = r[0].slice(e, (e += n))),
                2 == E && (v[1] = r[1].slice(e - n, e)),
                postMessage(
                  { cmd: te, buffer: v, ts: i },
                  v.map(e => e.buffer),
                )
            b && ((u[0] = r[0].slice(e)), 2 == E && (u[1] = r[1].slice(e)))
          }
        },
        sendWebsocketMessage: function (e) {
          i
            ? 1 === i.readyState
              ? i.send(e)
              : F.debug.error('worker', 'socket is not open')
            : F.debug.error('worker', 'socket is null')
        },
        timeEnd: function () {
          F.debug.error(
            'worker',
            'jessibuca pro 体验结束,请刷新页面再次体验，如需要购买商业授权，可以联系微信：bosswancheng',
          )
            //F.close(),
            //postMessage({ cmd: oe })
        },
      },
      U = ((F.debug = new me(F)), null),
      P = (l.AudioDecoder && (U = new l.AudioDecoder(F)), null)
    l.VideoDecoder && (P = new l.VideoDecoder(F)),
      postMessage({ cmd: 'init' }),
      (self.onmessage = function (e) {
        var t = e.data
        switch (t.cmd) {
          case 'init':
            try {
              F._opt = Object.assign(F._opt, JSON.parse(t.opt))
            } catch (e) {}
            F.init()
            break
          case 'decode':
            F.pushBuffer(t.buffer, t.options)
            break
          case 'audioDecode':
            F.decodeAudio(t.buffer, t.ts)
            break
          case 'videoDecode':
            F.decodeVideo(t.buffer, t.ts, t.isIFrame)
            break
          case 'clearBuffer':
            F.clearBuffer(t.needClear)
            break
          case 'fetchStream':
            F.fetchStream(t.url, JSON.parse(t.opt))
            break
          case 'close':
            F.close()
            break
          case 'updateConfig':
            F.debug.log('worker', 'updateConfig', t.key, t.value),
              (F._opt[t.key] = t.value),
              'playbackRate' === t.key &&
                (F.playbackUpdatePlaybackRate(),
                F.isPlaybackCacheBeforeDecodeForFpsRender() && F.playbackCacheLoop())
            break
          case 'sendWsMessage':
            F.sendWebsocketMessage(t.message)
        }
      })
  }
  Date.now ||
    (Date.now = function () {
      return new Date().getTime()
    }),
    (_.postRun = function () {
      je(_)
    })
})
